Ë
    ¢rœh6  ã                   óŒ   — d dl Z d dlmZm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y)
é    N)ÚOptionalÚUnion)ÚinfÚnanÚTensor)ÚChi2Úconstraints)ÚDistribution)Ú_standard_normalÚbroadcast_all)Ú_sizeÚStudentTc                   óT  ‡ — 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ef   d
eeef   deeef   dee   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                 ó†   — | j                   j                  t        j                  ¬«      }t        || j
                  dk  <   |S )N©Úmemory_formaté   )r   ÚcloneÚtorchÚcontiguous_formatr   r   ©ÚselfÚms     úo/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/torch/distributions/studentT.pyÚmeanzStudentT.mean*   s2   € àH‰HN‰N¬×)@Ñ)@ˆNÓAˆÜˆˆ$'‰'Q‰,‰Øˆó    c                 ó   — | j                   S ©N)r   )r   s    r   ÚmodezStudentT.mode0   s   € àx‰xˆr    c                 óÂ  — | j                   j                  t        j                  ¬«      }| j                  | j                   dkD     j                  d«      | j                   | j                   dkD     z  | j                   | j                   dkD     dz
  z  || j                   dkD  <   t        || j                   dk  | j                   dkD  z  <   t        || j                   dk  <   |S )Nr   é   r   )r   r   r   r   r   Úpowr   r   r   s     r   ÚvariancezStudentT.variance4   sº   € àG‰GM‰M¬×(?Ñ(?ˆMÓ@ˆàJ‰Jt—w‘w ‘{Ñ#×'Ñ'¨Ó*Øg‰gd—g‘g ‘kÑ"ñ#àw‰wt—w‘w ‘{Ñ# aÑ'ñ)ð 	
ˆ$'‰'A‰+‰ô
 -0ˆˆ47‰7a‰<˜DŸG™G a™KÑ
(Ñ)Üˆˆ$'‰'Q‰,‰Øˆr    Nr   r   r   Úvalidate_argsc                 óÐ   •— t        |||«      \  | _        | _        | _        t	        | j                  «      | _        | j                  j                  «       }t        ‰| !  ||¬«       y )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__@   sP   ø€ ô )6°b¸#¸uÓ(EÑ%ˆŒ”˜4œ:Ü˜$Ÿ'™'“]ˆŒ
Ø—g‘g—l‘l“nˆÜ‰Ñ˜°MÐÕBr    c                 óª  •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        | j                  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 Ó-ˆØ—‘—‘ Ó,ˆŒØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% kÓ2ˆŒ	Ø—J‘J×%Ñ% kÓ2ˆŒ	ÜŒh˜Ñ% kÀÐ%ÔGØ!×0Ñ0ˆÔØˆ
r    Úsample_shapec                 óH  — | j                  |«      }t        || j                  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   sx   € ð ×$Ñ$ \Ó2ˆÜ˜U¨$¯'©'¯-©-ÀÇÁÇÁÔOˆØJ‰J×Ñ˜|Ó,ˆØ”—‘˜A §¡™KÓ(Ñ(ˆØx‰x˜$Ÿ*™* q™.Ñ(Ð(r    c                 ó:  — | j                   r| j                  |«       || j                  z
  | j                  z  }| j                  j	                  «       d| j
                  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ç      à?ç      ð?g      à¿g       @)r5   Ú_validate_sampler   r   Úlogr   ÚmathÚpir   ÚlgammaÚlog1p)r   ÚvalueÚyrA   s       r   Úlog_probzStudentT.log_probe   sä   € Ø×ÒØ×!Ñ! %Ô(ØT—X‘XÑ §¡Ñ+ˆàJ‰JN‰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                 óì  — t        j                  d| j                  z  «      t        j                  d«      z   t        j                  d| j                  dz   z  «      z
  }| j                  j                  «       d| j                  dz   z  t        j                  d| j                  dz   z  «      t        j                  d| j                  z  «      z
  z  z   d| j                  j                  «       z  z   |z   S )NrD   r   )r   rJ   r   rH   r   rG   Údigamma)r   Úlbetas     r   ÚentropyzStudentT.entropyr   sÐ   € äL‰L˜˜tŸw™w™Ó'Ük‰k˜#Óñäl‰l˜3 $§'¡'¨A¡+Ñ.Ó/ñ0ð 	ð J‰JN‰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    )g        rE   Nr"   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚpositiveÚrealÚarg_constraintsÚsupportÚhas_rsampleÚpropertyr   r   r#   r'   r   Úfloatr   Úboolr.   r4   r   r3   r   r=   rN   rR   Ú__classcell__)r0   s   @r   r   r      s"  ø„ ñð$ ×"Ñ"Ø×ÑØ×%Ñ%ñ€Oð
 ×Ñ€GØ€Kàðfò ó ðð
 ðfò ó ðð ð	˜&ò 	ó ð	ð %(Ø&)Ø(,ñ
Cà&˜%-Ñ ð
Cð 6˜5=Ñ!ð
Cð V˜U]Ñ#ð	
Cð
   ‘~ð
Cð 
õ
Cõ	ð -7¨E¯J©J«Lñ ) Eð )¸Vó )òJö
r    )rH   Útypingr   r   r   r   r   r   Útorch.distributionsr   r	   Ú torch.distributions.distributionr
   Útorch.distributions.utilsr   r   Útorch.typesr   Ú__all__r   © r    r   ú<module>rg      s7   ðã ß "ã ß "Ñ "ß 1Ý 9ß EÝ ð ˆ,€ôo
ˆ|õ o
r    