§
    ®˜ºhd  ã                   ó�   — 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	 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)ÚOptionalÚUnion)Ú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ef         de
eef         dee         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        €úb/var/www/html/services/rag-service/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 r0   )r+   r   r%   Úcauchy_r   )r   r4   Ú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?   rA   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 rE   )r   Útanr=   r?   r   r   rA   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   r0   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsampler   r   Úfloatr   Úboolr   r"   Úpropertyr-   r1   r3   r   r   r   r9   rC   rG   rJ   rM   Ú__classcell__)r   s   @r   r   r      sÃ  ø€ € € € € ðð ð" *Ô.¸Ô9MÐNÐN€OØÔ€GØ€Kð )-ð	Cð Cà�6˜5�=Ô!ðCð �V˜U�]Ô#ðCð   ”~ð	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=   Útypingr   r   r   r   r   r   Útorch.distributionsr   Ú torch.distributions.distributionr	   Útorch.distributions.utilsr
   Útorch.typesr   r   Ú__all__r   © r   r   ú<module>rb      sâ   ðà €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ*€ðS8ð S8ð S8ð S8ð S8ˆ\ñ S8ô S8ð S8ð S8ð S8r   