§
    ŠŠtj¢  ã                   óp   — d dl Z d dl 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)ÚTensor)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_NumberÚ_sizeÚLaplacec            	       ó<  ‡ — e Zd ZdZ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e
def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j        ¦   «         fdedefd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r	   a¾  
    Creates a Laplace distribution parameterized by :attr:`loc` and :attr:`scale`.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = Laplace(torch.tensor([0.0]), torch.tensor([1.0]))
        >>> m.sample()  # Laplace distributed with loc=0, scale=1
        tensor([ 0.1046])

    Args:
        loc (float or Tensor): mean of the distribution
        scale (float or Tensor): scale of the distribution
    )ÚlocÚscaleTÚreturnc                 ó   — | j         S ©N©r   ©Úselfs    úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/laplace.pyÚmeanzLaplace.mean#   ó	   € àŒxˆó    c                 ó   — | j         S r   r   r   s    r   ÚmodezLaplace.mode'   r   r   c                 ó<   — d| j                              d¦  «        z  S ©Né   )r   Úpowr   s    r   ÚvariancezLaplace.variance+   s   € à�4”:—>’> !Ñ$Ô$Ñ$Ð$r   c                 ó   — d| j         z  S )NgÍ;fž ö?)r   r   s    r   ÚstddevzLaplace.stddev/   s   € à˜$œ*Ñ$Ð$r   Nr   r   Úvalidate_argsc                 ó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__)r   r   r   r    Úbatch_shapeÚ	__class__s        €r   r(   zLaplace.__init__3   s   ø€ õ  -¨S°%Ñ8Ô8ÑˆŒ�$”*Ý�c�7Ñ#Ô#ð 	*­
°5½'Ñ(BÔ(Bð 	*Ýœ*™,œ,ˆKˆKàœ(Ÿ-š-™/œ/ˆKÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBr   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Laplace.expand@   s†   ø€ Ø×(Ò(­°)Ñ<Ô<ˆÝ”j Ñ-Ô-ˆØ”(—/’/ +Ñ.Ô.ˆŒØ”J×%Ò% kÑ2Ô2ˆŒ	Ý�g�sÑÔ×$Ò$ [ÀÐ$ÑFÔFÐFØ!Ô0ˆÔØˆ
r   Úsample_shapec                 óÔ  — |                       |¦  «        }t          j        | j        j        ¦  «        }t          j                             ¦   «         r–t          j        || j        j        | j        j        ¬¦  «        dz  dz
  }| j        | j	        | 
                    ¦   «         z  t          j        |                     ¦   «                              |j        ¬¦  «         ¦  «        z  z
  S | j                             |¦  «                             |j        dz
  d¦  «        }| j        | j	        | 
                    ¦   «         z  t          j        |                     ¦   «          ¦  «        z  z
  S )N)ÚdtypeÚdevicer   é   )Úmin)Ú_extended_shaper$   Úfinfor   r3   Ú_CÚ_get_tracing_stateÚrandr4   r   ÚsignÚlog1pÚabsÚclampÚtinyr0   Úuniform_Úeps)r   r1   Úshaper8   Úus        r   ÚrsamplezLaplace.rsampleI   s  € Ø×$Ò$ \Ñ2Ô2ˆÝ”˜DœHœNÑ+Ô+ˆÝŒ8×&Ò&Ñ(Ô(ð 	å”
˜5¨¬¬¸t¼x¼ÐOÑOÔOÐRSÑSÐVWÑWˆAØ”8˜dœj¨1¯6ª6©8¬8Ñ3µe´kØ—’‘”—’ 5¤:�Ñ.Ô.Ð.ñ7ô 7ñ ñ ð ð ŒH�LŠL˜ÑÔ×(Ò(¨¬°Q©¸Ñ:Ô:ˆð Œx˜$œ* q§v¢v¡x¤xÑ/µ%´+¸q¿uºu¹w¼w¸hÑ2GÔ2GÑGÑGÐGr   c                 ó¾   — | j         r|                      |¦  «         t          j        d| j        z  ¦  «         t          j        || j        z
  ¦  «        | j        z  z
  S r   )r.   Ú_validate_sampler$   Úlogr   r>   r   ©r   Úvalues     r   Úlog_probzLaplace.log_probW   sW   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ý”	˜!˜dœj™.Ñ)Ô)Ð)­E¬I°e¸d¼hÑ6FÑ,GÔ,GÈ$Ì*Ñ,TÑTÐTr   c                 óî   — | j         r|                      |¦  «         dd|| j        z
                       ¦   «         z  t	          j        || j        z
                       ¦   «          | j        z  ¦  «        z  z
  S )Nç      à?)r.   rG   r   r<   r$   Úexpm1r>   r   rI   s     r   ÚcdfzLaplace.cdf\   s{   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ø�S˜E D¤HÑ,×2Ò2Ñ4Ô4Ñ4µu´{Ø�d”hÑ×#Ò#Ñ%Ô%Ð%¨¬
Ñ2ñ8
ô 8
ñ 
ñ 
ð 	
r   c                 ó¨   — |dz
  }| j         | j        |                     ¦   «         z  t          j        d|                     ¦   «         z  ¦  «        z  z
  S )NrM   éþÿÿÿ)r   r   r<   r$   r=   r>   )r   rJ   Úterms      r   ÚicdfzLaplace.icdfc   sB   € Ø�s‰{ˆØŒx˜$œ*¨§{¢{¡}¤}Ñ4µu´{À2ÈÏÊÉ
Ì
Á?Ñ7SÔ7SÑSÑSÐSr   c                 ó@   — dt          j        d| j        z  ¦  «        z   S )Nr5   r   )r$   rH   r   r   s    r   ÚentropyzLaplace.entropyg   s   € Ø•5”9˜Q ¤™^Ñ,Ô,Ñ,Ð,r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsampleÚpropertyr   r   r   r   r   ÚfloatÚboolr(   r-   r$   r%   r   rE   rK   rO   rS   rU   Ú__classcell__)r*   s   @r   r	   r	      så  ø€ € € € € ðð ð  *Ô.¸Ô9MÐNÐN€OØÔ€GØ€Kàð�fð ð ð ñ „Xðð ð�fð ð ð ñ „Xðð ð%˜&ð %ð %ð %ñ „Xð%ð ð%˜ð %ð %ð %ñ „Xð%ð &*ð	Cð Cà�e‰^ðCð ˜‰~ðCð ˜d‘{ð	Cð
 
ðCð Cð Cð Cð Cð Cðð ð ð ð ð ð -7¨E¬J©L¬Lð Hð H Eð H¸Vð Hð Hð Hð HðUð Uð Uð

ð 
ð 
ðTð Tð Tð-ð -ð -ð -ð -ð -ð -r   )r$   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r	   © r   r   ú<module>ri      s·   ðð €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ+€ðZ-ð Z-ð Z-ð Z-ð Z-ˆlñ Z-ô Z-ð Z-ð Z-ð Z-r   