
    [Th                     |    S SK r S SKrS SKJr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Tensor)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\4S j5       r\S\4S j5       r\S\4S j5       rSU 4S	 jjrSU 4S
 jjr\R&                  " 5       4S\S\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scaleTreturnc                 ~    U R                   R                  [        R                  S9n[        XR
                  S:*  '   U$ )Nmemory_format   )r   clonetorchcontiguous_formatr   r   selfms     T/var/www/auris/envauris/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.variance3   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   r0   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/   r0   _validate_args)r   r1   	_instancenewr2   s       r   r7   StudentT.expandE   s    ((9=jj-,((//+.JJ%%k2	JJ%%k2	h%k%G!00
r    sample_shapec                 @   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   rA   StudentT.rsampleP   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       @)r8   _validate_sampler   r   logr   mathpir   lgammalog1p)r   valueyrE   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-   $ )NrI   r   )r   rO   r   rM   r   rL   digamma)r   lbetas     r   entropyStudentT.entropyk   s    LLtww'kk#ll3$''A+./0 	 JJNNww{}}SDGGaK01EMM#-4PPRR DGGKKM!	"
 	
r    )r-   r   r   r   )g        rJ   Nr"   )__name__
__module____qualname____firstlineno____doc__r   positiverealarg_constraintssupporthas_rsamplepropertyr   r   r#   r(   r0   r7   r   r6   r   rA   rS   rX   __static_attributes____classcell__)r2   s   @r   r   r      s    $ ""%%O
 GKf  
 f   	& 	 	C	 -2JJL )E )V )J
 
r    )rM   r   r   r   r   torch.distributionsr   r    torch.distributions.distributionr   torch.distributions.utilsr	   r
   torch.typesr   __all__r    r    r   <module>rm      s4      " " 1 9 E  ,i
| i
r    