§
    ŠŠtjW  ã                   ó€   — d dl Z d dlZd dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ dgZ G d„ de¦  «        ZdS )	é    N)ÚinfÚnanÚTensor)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_NumberÚ_sizeÚCauchyc            	       ó   ‡ — e Zd ZdZej        ej        dœZej        ZdZ		 dde
ez  de
ez  dedz  ddfˆ fd	„Zdˆ fd
„	Zede
fd„¦   «         Zede
fd„¦   «         Zede
fd„¦   «         Z ej        ¦   «         fdede
fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   aC  
    Samples from a Cauchy (Lorentz) distribution. The distribution of the ratio of
    independent normally distributed random variables with means `0` follows a
    Cauchy distribution.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = Cauchy(torch.tensor([0.0]), torch.tensor([1.0]))
        >>> m.sample()  # sample from a Cauchy distribution with loc=0 and scale=1
        tensor([ 2.3214])

    Args:
        loc (float or Tensor): mode or median of the distribution.
        scale (float or Tensor): half width at half maximum.
    )ÚlocÚscaleTNr   r   Úvalidate_argsÚreturnc                 ó6  •— t          ||¦  «        \  | _        | _        t          |t          ¦  «        r)t          |t          ¦  «        rt          j        ¦   «         }n| j                             ¦   «         }t          ¦   «          	                    ||¬¦  «         d S )N©r   )
r   r   r   Ú
isinstancer	   ÚtorchÚSizeÚsizeÚsuperÚ__init__)Úselfr   r   r   Úbatch_shapeÚ	__class__s        €úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/cauchy.pyr   zCauchy.__init__&   s   ø€ õ  -¨S°%Ñ8Ô8ÑˆŒ�$”*Ý�c�7Ñ#Ô#ð 	*­
°5½'Ñ(BÔ(Bð 	*Ýœ*™,œ,ˆKˆKàœ(Ÿ-š-™/œ/ˆKÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBó    c                 óN  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        | j                             |¦  «        |_        t          t          |¦  «                             |d¬¦  «         | j	        |_	        |S )NFr   )
Ú_get_checked_instancer   r   r   r   Úexpandr   r   r   Ú_validate_args)r   r   Ú	_instanceÚnewr   s       €r   r    zCauchy.expand3   s†   ø€ Ø×(Ò(­°Ñ;Ô;ˆÝ”j Ñ-Ô-ˆØ”(—/’/ +Ñ.Ô.ˆŒØ”J×%Ò% kÑ2Ô2ˆŒ	Ý�f�cÑÔ×#Ò# K¸uÐ#ÑEÔEÐEØ!Ô0ˆÔØˆ
r   c                 óˆ   — t          j        |                      ¦   «         t          | j        j        | j        j        ¬¦  «        S ©N)ÚdtypeÚdevice)r   ÚfullÚ_extended_shaper   r   r&   r'   ©r   s    r   ÚmeanzCauchy.mean<   ó8   € åŒzØ× Ò Ñ"Ô"¥C¨t¬x¬~ÀdÄhÄoð
ñ 
ô 
ð 	
r   c                 ó   — | j         S ©N)r   r*   s    r   ÚmodezCauchy.modeB   s	   € àŒxˆr   c                 óˆ   — t          j        |                      ¦   «         t          | j        j        | j        j        ¬¦  «        S r%   )r   r(   r)   r   r   r&   r'   r*   s    r   ÚvariancezCauchy.varianceF   r,   r   Úsample_shapec                 ó¨   — |                       |¦  «        }| j                             |¦  «                             ¦   «         }| j        || j        z  z   S r.   )r)   r   r#   Úcauchy_r   )r   r2   ÚshapeÚepss       r   ÚrsamplezCauchy.rsampleL   sH   € Ø×$Ò$ \Ñ2Ô2ˆØŒh�lŠl˜5Ñ!Ô!×)Ò)Ñ+Ô+ˆØŒx˜# ¤
Ñ*Ñ*Ð*r   c                 óü   — | j         r|                      |¦  «         t          j        t          j        ¦  «         | j                             ¦   «         z
  || j        z
  | j        z  dz                       ¦   «         z
  S )Né   )r!   Ú_validate_sampleÚmathÚlogÚpir   r   Úlog1p©r   Úvalues     r   Úlog_probzCauchy.log_probQ   ss   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(åŒX•d”gÑÔÐØŒj�nŠnÑÔñà˜œÑ! T¤ZÑ/°AÑ5×<Ò<Ñ>Ô>ñ?ð	
r   c                 ó¢   — | j         r|                      |¦  «         t          j        || j        z
  | j        z  ¦  «        t          j        z  dz   S ©Ng      à?)r!   r:   r   Úatanr   r   r;   r=   r?   s     r   Úcdfz
Cauchy.cdfZ   sK   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ÝŒz˜5 4¤8Ñ+¨t¬zÑ9Ñ:Ô:½T¼WÑDÀsÑJÐJr   c                 ój   — t          j        t          j        |dz
  z  ¦  «        | j        z  | j        z   S rC   )r   Útanr;   r=   r   r   r?   s     r   ÚicdfzCauchy.icdf_   s+   € ÝŒy�œ E¨C¡KÑ0Ñ1Ô1°D´JÑ>ÀÄÑIÐIr   c                 óx   — t          j        dt           j        z  ¦  «        | j                             ¦   «         z   S )Né   )r;   r<   r=   r   r*   s    r   ÚentropyzCauchy.entropyb   s)   € ÝŒx˜�DœG™Ñ$Ô$ t¤z§~¢~Ñ'7Ô'7Ñ7Ð7r   r.   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsampler   ÚfloatÚboolr   r    Úpropertyr+   r/   r1   r   r   r
   r7   rA   rE   rH   rK   Ú__classcell__)r   s   @r   r   r      s¹  ø€ € € € € ðð ð$ *Ô.¸Ô9MÐNÐN€OØÔ€GØ€Kð &*ð	Cð Cà�e‰^ðCð ˜‰~ðCð ˜d‘{ð	Cð
 
ðCð Cð Cð Cð Cð Cðð ð ð ð ð ð ð
�fð 
ð 
ð 
ñ „Xð
ð
 ð�fð ð ð ñ „Xðð ð
˜&ð 
ð 
ð 
ñ „Xð
ð
 -7¨E¬J©L¬Lð +ð + Eð +¸Vð +ð +ð +ð +ð

ð 
ð 
ðKð Kð Kð
Jð Jð Jð8ð 8ð 8ð 8ð 8ð 8ð 8r   )r;   r   r   r   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr	   r
   Ú__all__r   © r   r   ú<module>r_      sÊ   ðà €€€à €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ*€ðT8ð T8ð T8ð T8ð T8ˆ\ñ T8ô T8ð T8ð T8ð T8r   