
    IЦic                     x    S SK r S SKrS SKJrJr  S SKJrJr  S SKJr  S SK	J
r
Jr  S SKJr  S/r " S S\5      rg)	    N)infnan)Chi2constraints)Distribution)_standard_normalbroadcast_all)_sizeStudentTc                   *  ^  \ rS rSrSr\R                  \R                  \R                  S.r\R                  r	Sr
\S 5       r\S 5       r\S 5       rSU 4S jjrSU 4S	 jjr\R$                  " 5       4S
\S\R(                  4S jjrS rS rSrU =r$ )r      a  
Creates a Student's t-distribution parameterized by degree of
freedom :attr:`df`, mean :attr:`loc` and scale :attr:`scale`.

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = StudentT(torch.tensor([2.0]))
    >>> m.sample()  # Student's t-distributed with degrees of freedom=2
    tensor([ 0.1046])

Args:
    df (float or Tensor): degrees of freedom
    loc (float or Tensor): mean of the distribution
    scale (float or Tensor): scale of the distribution
)dflocscaleTc                 ~    U R                   R                  [        R                  S9n[        XR
                  S:*  '   U$ )Nmemory_format   )r   clonetorchcontiguous_formatr   r   selfms     [/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/distributions/studentT.pymeanStudentT.mean(   s0    HHNN)@)@NA''Q,    c                     U R                   $ N)r   )r   s    r   modeStudentT.mode.   s    xxr   c                    U R                   R                  [        R                  S9nU R                  U R                   S:     R                  S5      U R                   U R                   S:     -  U R                   U R                   S:     S-
  -  XR                   S:  '   [        XR                   S:*  U R                   S:  -  '   [        XR                   S:*  '   U$ )Nr      r   )r   r   r   r   r   powr   r   r   s     r   varianceStudentT.variance2   s    GGMM(?(?M@JJtww{#''*ggdggk"#wwtww{#a') 	
''A+
 -077a<DGGaK
()''Q,r   c                    > [        XU5      u  U l        U l        U l        [	        U R                  5      U l        U R                  R                  5       n[        TU ]!  XTS9  g )Nvalidate_args)	r	   r   r   r   r   _chi2sizesuper__init__)r   r   r   r   r*   batch_shape	__class__s         r   r.   StudentT.__init__>   sJ    (5bu(E%4:$'']
ggllnBr   c                   > U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        U R                  R                  U5      Ul        U R                  R                  U5      Ul        [        [        U]+  USS9  U R                  Ul        U$ )NFr)   )_get_checked_instancer   r   Sizer   expandr   r   r+   r-   r.   _validate_args)r   r/   	_instancenewr0   s       r   r5   StudentT.expandD   s    ((9=jj-,((//+.JJ%%k2	JJ%%k2	h%k%G!00
r   sample_shapereturnc                 @   U R                  U5      n[        X R                  R                  U R                  R                  S9nU R
                  R                  U5      nU[        R                  " X@R                  -  5      -  nU R                  U R                  U-  -   $ )N)dtypedevice)_extended_shaper   r   r=   r>   r+   rsampler   rsqrtr   r   )r   r:   shapeXZYs         r   r@   StudentT.rsampleO   st     $$\2U''--OJJ|,AK((xx$**q.((r   c                 J   U R                   (       a  U R                  U5        XR                  -
  U R                  -  nU R                  R	                  5       SU R
                  R	                  5       -  -   S[        R                  " [        R                  5      -  -   [        R                  " SU R
                  -  5      -   [        R                  " SU R
                  S-   -  5      -
  nSU R
                  S-   -  [        R                  " US-  U R
                  -  5      -  U-
  $ )N      ?      ?g      g       @)r6   _validate_sampler   r   logr   mathpir   lgammalog1p)r   valueyrD   s       r   log_probStudentT.log_prob]   s    !!%(XX+JJNNDGGKKM!"DHHTWW%%& ll3=)* ll3$''C-01	2 	
 tww}%AsFTWW4D(EEIIr   c                    [         R                  " SU R                  -  5      [        R                  " S5      -   [         R                  " SU R                  S-   -  5      -
  nU R                  R                  5       SU R                  S-   -  [         R                  " SU R                  S-   -  5      [         R                  " SU R                  -  5      -
  -  -   SU R                  R                  5       -  -   U-   $ )NrH   r   )r   rN   r   rL   r   rK   digamma)r   lbetas     r   entropyStudentT.entropyj   s    LLtww'kk#ll3$''A+./0 	 JJNNww{}}SDGGaK01EMM#-4PPRR DGGKKM!	"
 	
r   )r+   r   r   r   )g        rI   Nr    )__name__
__module____qualname____firstlineno____doc__r   positiverealarg_constraintssupporthas_rsamplepropertyr   r!   r&   r.   r5   r   r4   r
   Tensorr@   rR   rW   __static_attributes____classcell__)r0   s   @r   r   r      s    " ""%%O
 GK 
   	 	C	 -2JJL )E )U\\ )J
 
r   )rL   r   r   r   torch.distributionsr   r    torch.distributions.distributionr   torch.distributions.utilsr   r	   torch.typesr
   __all__r    r   r   <module>rm      s1       1 9 E  ,h
| h
r   