
    9i6                         S SK r S SKJrJ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)OptionalUnion)infnanTensor)Chi2constraints)Distribution)_standard_normalbroadcast_all)_sizeStudentTc                   p  ^  \ 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S
\\\4   S\\\4   S\\\4   S\\   SS	4
U 4S j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     \/var/www/html/land-doc-ocr/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.mode0   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.variance4   s    GGMM(?(?M@JJtww{#''*ggdggk"#wwtww{#a') 	
''A+
 -077a<DGGaK
()''Q,r"   Nr   r   r   validate_argsc                    > [        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r,   )	r   r   r   r   r   _chi2sizesuper__init__)r   r   r   r   r,   batch_shape	__class__s         r   r2   StudentT.__init__@   sL     )6bu(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/   r1   r2   _validate_args)r   r3   	_instancenewr4   s       r   r9   StudentT.expandL   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@   rA   r/   rsampler   rsqrtr   r   )r   r>   shapeXZYs         r   rC   StudentT.rsampleW   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       @)r:   _validate_sampler   r   logr   mathpir   lgammalog1p)r   valueyrG   s       r   log_probStudentT.log_probe   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-   $ )NrK   r   )r   rQ   r   rO   r   rN   digamma)r   lbetas     r   entropyStudentT.entropyr   s    LLtww'kk#ll3$''A+./0 	 JJNNww{}}SDGGaK01EMM#-4PPRR DGGKKM!	"
 	
r"   )r/   r   r   r   )g        rL   Nr$   )__name__
__module____qualname____firstlineno____doc__r	   positiverealarg_constraintssupporthas_rsamplepropertyr   r    r%   r*   r   floatr   boolr2   r9   r   r8   r   rC   rU   rZ   __static_attributes____classcell__)r4   s   @r   r   r      s+   $ ""%%O
 GKf  
 f   	& 	 	 %(&)(,
C&%- 
C 65=!
C VU]#	
C
  ~
C 

C 
C	 -2JJL )E )V )J
 
r"   )rO   typingr   r   r   r   r   r   torch.distributionsr   r	    torch.distributions.distributionr
   torch.distributions.utilsr   r   torch.typesr   __all__r    r"   r   <module>rr      s7     "  " " 1 9 E  ,o
| o
r"   