§
    ®˜ºh¯  ã                   ó€   — d dl mZmZ 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 )
é    )ÚOptionalÚUnionN)ÚTensor)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_NumberÚ_sizeÚLaplacec            	       óV  ‡ — 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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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    úc/var/www/html/services/rag-service/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   r5   Ú_CÚ_get_tracing_stateÚrandr6   r   ÚsignÚlog1pÚabsÚclampÚtinyr2   Úuniform_Úeps)r   r3   Úshaper:   Ú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   )r0   Ú_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ç      à?)r0   rI   r   r>   r&   Úexpm1r@   r   rK   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 )NrO   éþÿÿÿ)r   r   r>   r&   r?   r@   )r   rL   Ú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 )Nr7   r   )r&   rJ   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!   r   Úfloatr   Úboolr*   r/   r&   r'   r
   rG   rM   rQ   rU   rW   Ú__classcell__)r,   s   @r   r   r      sï  ø€ € € € € ðð ð *Ô.¸Ô9MÐNÐN€OØÔ€GØ€Kàð�fð ð ð ñ „Xðð ð�fð ð ð ñ „Xðð ð%˜&ð %ð %ð %ñ „Xð%ð ð%˜ð %ð %ð %ñ „Xð%ð )-ð	Cð Cà�6˜5�=Ô!ðCð �V˜U�]Ô#ðCð   ”~ð	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   )Útypingr   r   r&   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr	   r
   Ú__all__r   © r   r   ú<module>rl      sÍ   ðà "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ+€ðY-ð Y-ð Y-ð Y-ð Y-ˆlñ Y-ô Y-ð Y-ð Y-ð Y-r   