ó
    Eñi#  ã                   ó|   • 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                   ód  ^ • \ 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
\\-  S\\-  S\\-  S\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     ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/studentT.pyÚmeanÚStudentT.mean*   s0   € à�H‰H�N‰N¬×)@Ñ)@ˆNÐAˆÜˆ�'‰'�Q‰,‰Øˆó    c                 ó   • U R                   $ ©N)r   )r   s    r   ÚmodeÚStudentT.mode0   s   € à�x‰xˆ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´   € à�G‰G�M‰M¬×(?Ñ(?ˆMÐ@ˆà�J‰J�t—w‘w ‘{Ñ#×'Ñ'¨Ó*Ø�g‰g�d—g‘g ‘kÑ"ñ#à�w‰w�t—w‘w ‘{Ñ# aÑ'ñ)ð 	
�'‰'�A‰+‰ô
 -0ˆ�7‰7�a‰<˜DŸG™G a™KÑ
(Ñ)Üˆ�'‰'�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   r0   ÚStudentT.__init__@   sL   ø€ ô )6°b¸uÓ(EÑ%ˆŒ�”˜4œ:Ü˜$Ÿ'™'“]ˆŒ
Ø—g‘g—l‘l“nˆÜ‰Ñ˜ÐÒ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.expandL   sž   ø€ Ø×(Ñ(¬°9Ó=ˆÜ—j’j Ó-ˆØ—‘—‘ Ó,ˆŒØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% kÓ2ˆŒ	Ø—J‘J×%Ñ% 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.rsampleW   st   € ð ×$Ñ$ \Ó2ˆÜ˜U¯'©'¯-©-ÀÇÁÇÁÑOˆØ�J‰J×Ñ˜|Ó,ˆØ”—’˜A§¡™KÓ(Ñ(ˆØ�x‰x˜$Ÿ*™* 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_probe   sâ   € Ø××Ø×!Ñ! %Ô(Ø—X‘XÑ §¡Ñ+ˆà�J‰J�N‰NÓØ�D—G‘G—K‘K“MÑ!ñ"à”D—H’HœTŸW™WÓ%Ñ%ñ&ô �lŠl˜3 §¡™=Ó)ñ*ô �lŠl˜3 $§'¡'¨C¡-Ñ0Ó1ñ	2ð 	
ð �t—w‘w ‘}Ñ%¬¯ª°A°s±F¸T¿W¹WÑ4DÓ(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.entropyr   sÐ   € ä�LŠL˜˜tŸw™w™Ó'Ü�kŠk˜#Óñä�lŠl˜3 $§'¡'¨A¡+Ñ.Ó/ñ0ð 	ð �J‰J�N‰NÓØØ�w‰w˜‰{ñä�}Š}˜S D§G¡G¨a¡KÑ0Ó1´E·M²MÀ#ÈÏÉÁ-Ó4PÑPñRñRð �D—G‘G—K‘K“MÑ!ñ	"ð
 ñð	
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(   ÚfloatÚboolr0   r7   r   r6   r   rA   rS   rX   Ú__static_attributes__Ú__classcell__)r2   s   @r   r   r      s  ø† ñð& ×"Ñ"Ø×ÑØ×%Ñ%ñ€Oð
 ×Ñ€GØ€Kàð�fó ó ðð
 ð�fó ó ðð ð	˜&ó 	ó ð	ð "Ø #Ø%)ñ
Cà�U‰Nð
Cð �e‰^ð
Cð ˜‰~ð	
Cð
 ˜d‘{ð
Cð 
÷
Cð 
C÷	ð -2¯JªJ«Lñ ) 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>ro      s4   ðã ã ß "Ñ "ß 1Ý 9ß EÝ ð ˆ,€ôp
ˆ|õ p
r    