§
    ”j#  ã                   ó„   — d dl Z d dlZd dlmZmZmZ d dlmZmZ d dlm	Z	 d dl
mZmZ d dlmZ dgZ G d„ de	¦  «        ZdS )	é    N)ÚinfÚnanÚTensor)ÚChi2Úconstraints)ÚDistribution)Ú_standard_normalÚbroadcast_all)Ú_sizeÚStudentTc                   ó.  ‡ — e Zd ZdZej        ej        ej        dœZej        ZdZ	e
defd„¦   «         Ze
defd„¦   «         Ze
defd„¦   «         Z	 	 	 ddeez  deez  deez  ded
z  dd
f
ˆ fd„Zdˆ fd„	Z ej        ¦   «         fdedefd„Zd„ Zd„ Zˆ xZS )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                 óv   — | j                              t          j        ¬¦  «        }t          || j        dk    <   |S )N©Úmemory_formaté   )r   ÚcloneÚtorchÚcontiguous_formatr   r   ©ÚselfÚms     úf/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/torch/distributions/studentT.pyÚmeanzStudentT.mean*   s.   € àŒHNŠN­Ô)@ˆNÑAÔAˆÝˆˆ$Œ'QŠ,‰Øˆó    c                 ó   — | j         S ©N)r   )r   s    r   ÚmodezStudentT.mode0   s	   € àŒxˆr   c                 ó€  — | j                              t          j        ¬¦  «        }| j        | j         dk                                  d¦  «        | j         | j         dk             z  | j         | j         dk             dz
  z  || j         dk    <   t          || j         dk    | j         dk    z  <   t          || j         dk    <   |S )Nr   é   r   )r   r   r   r   r   Úpowr   r   r   s     r   ÚvariancezStudentT.variance4   s§   € àŒGMŠM­Ô(?ˆMÑ@Ô@ˆàŒJt”w ’{Ô#×'Ò'¨Ñ*Ô*ØŒgd”g ’kÔ"ñ#àŒwt”w ’{Ô# aÑ'ñ)ð 	
ˆ$Œ'AŠ+‰õ
 -0ˆˆ4Œ7aŠ<˜DœG ašKÑ
(Ñ)Ýˆˆ$Œ'QŠ,‰Øˆr   ç        ç      ð?Nr   r   r   Úvalidate_argsc                 óú   •— t          |||¦  «        \  | _        | _        | _        t	          | j        ¦  «        | _        | j                             ¦   «         }t          ¦   «                              ||¬¦  «         d S )N©r(   )	r
   r   r   r   r   Ú_chi2ÚsizeÚsuperÚ__init__)r   r   r   r   r(   Úbatch_shapeÚ	__class__s         €r   r.   zStudentT.__init__@   sd   ø€ õ )6°b¸#¸uÑ(EÔ(EÑ%ˆŒ”˜4œ:Ý˜$œ'‘]”]ˆŒ
Ø”g—l’l‘n”nˆÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBr   c                 óÊ  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        | j                             |¦  «        |_        | j                             |¦  «        |_        | j                             |¦  «        |_        t          t          |¦  «         
                    |d¬¦  «         | j        |_        |S )NFr*   )Ú_get_checked_instancer   r   ÚSizer   Úexpandr   r   r+   r-   r.   Ú_validate_args)r   r/   Ú	_instanceÚnewr0   s       €r   r4   zStudentT.expandL   s²   ø€ Ø×(Ò(­°9Ñ=Ô=ˆÝ”j Ñ-Ô-ˆØ”—’ Ñ,Ô,ˆŒØ”(—/’/ +Ñ.Ô.ˆŒØ”J×%Ò% kÑ2Ô2ˆŒ	Ø”J×%Ò% kÑ2Ô2ˆŒ	Ýh˜ÑÔ×%Ò% kÀÐ%ÑGÔGÐGØ!Ô0ˆÔØˆ
r   Úsample_shapec                 ó  — |                       |¦  «        }t          || j        j        | j        j        ¬¦  «        }| j                             |¦  «        }|t          j        || j        z  ¦  «        z  }| j	        | j
        |z  z   S )N)ÚdtypeÚdevice)Ú_extended_shaper	   r   r:   r;   r+   Úrsampler   Úrsqrtr   r   )r   r8   ÚshapeÚXÚZÚYs         r   r=   zStudentT.rsampleW   su   € ð ×$Ò$ \Ñ2Ô2ˆÝ˜U¨$¬'¬-ÀÄÄÐOÑOÔOˆØŒJ×Ò˜|Ñ,Ô,ˆØ•”˜A ¤™KÑ(Ô(Ñ(ˆØŒx˜$œ* q™.Ñ(Ð(r   c                 óè  — | j         r|                      |¦  «         || j        z
  | j        z  }| j                             ¦   «         d| j                             ¦   «         z  z   dt          j        t          j        ¦  «        z  z   t          j	        d| j        z  ¦  «        z   t          j	        d| j        dz   z  ¦  «        z
  }d| j        dz   z  t          j
        |dz  | j        z  ¦  «        z  |z
  S )Nç      à?r'   g      à¿g       @)r5   Ú_validate_sampler   r   Úlogr   ÚmathÚpir   ÚlgammaÚlog1p)r   ÚvalueÚyrA   s       r   Úlog_probzStudentT.log_probe   sã   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ØT”XÑ ¤Ñ+ˆàŒJNŠNÑÔØD”G—K’K‘M”MÑ!ñ"à•D”HTœWÑ%Ô%Ñ%ñ&õ Œl˜3 ¤™=Ñ)Ô)ñ*õ Œl˜3 $¤'¨C¡-Ñ0Ñ1Ô1ñ	2ð 	
ð t”w ‘}Ñ%­¬°A°s±F¸T¼WÑ4DÑ(EÔ(EÑEÈÑIÐIr   c                 ó¬  — t          j        d| j        z  ¦  «        t          j        d¦  «        z   t          j        d| j        dz   z  ¦  «        z
  }| j                             ¦   «         d| j        dz   z  t          j        d| j        dz   z  ¦  «        t          j        d| j        z  ¦  «        z
  z  z   d| j                             ¦   «         z  z   |z   S )NrD   r   )r   rI   r   rG   r   rF   Údigamma)r   Úlbetas     r   ÚentropyzStudentT.entropyr   sÌ   € åŒL˜˜tœw™Ñ'Ô'ÝŒk˜#ÑÔñåŒl˜3 $¤'¨A¡+Ñ.Ñ/Ô/ñ0ð 	ð ŒJNŠNÑÔØØŒw˜‰{ñåŒ}˜S D¤G¨a¡KÑ0Ñ1Ô1µE´MÀ#ÈÌÁ-Ñ4PÔ4PÑPñRñRð D”G—K’K‘M”MÑ!ñ	"ð
 ñð	
r   )r&   r'   Nr    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚrealÚarg_constraintsÚsupportÚhas_rsampleÚpropertyr   r   r!   r%   ÚfloatÚboolr.   r4   r   r3   r   r=   rM   rQ   Ú__classcell__)r0   s   @r   r   r      s¸  ø€ € € € € ðð ð& Ô"ØÔØÔ%ðð €Oð
 Ô€GØ€Kàðfð ð ð ñ „Xðð
 ðfð ð ð ñ „Xðð ð	˜&ð 	ð 	ð 	ñ „Xð	ð "Ø #Ø%)ð
Cð 
CàU‰Nð
Cð e‰^ð
Cð ˜‰~ð	
Cð
 ˜d‘{ð
Cð 
ð
Cð 
Cð 
Cð 
Cð 
Cð 
Cð	ð 	ð 	ð 	ð 	ð 	ð -7¨E¬J©L¬Lð )ð ) Eð )¸Vð )ð )ð )ð )ðJð Jð Jð
ð 
ð 
ð 
ð 
ð 
ð 
r   )rG   r   r   r   r   Útorch.distributionsr   r   Ú torch.distributions.distributionr   Útorch.distributions.utilsr	   r
   Útorch.typesr   Ú__all__r   © r   r   ú<module>re      sÐ   ðà €€€à €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ Ð Ð Ð Ð Ð ð ˆ,€ðp
ð p
ð p
ð p
ð p
ˆ|ñ p
ô p
ð p
ð p
ð p
r   