Ë
    *êñi¢  ã                   óh   — 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y)	é    N)ÚTensor)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_NumberÚ_sizeÚLaplacec            	       óF  ‡ — 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    ú]/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torch/distributions/laplace.pyÚmeanzLaplace.mean#   ó   € à�x‰xˆó    c                 ó   — | j                   S r   r   r   s    r   ÚmodezLaplace.mode'   r   r   c                 ó>   — d| j                   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                 óø   •— t        ||«      \  | _        | _        t        |t        «      r%t        |t        «      rt        j                  «       }n| j                  j                  «       }t        ‰| �%  ||¬«       y )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   sY   ø€ ô  -¨S°%Ó8ÑˆŒ�$”*Ü�cœ7Ô#¬
°5¼'Ô(BÜŸ*™*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜°MÐÕBr   c                 ó*  •— | j                  t        |«      }t        j                  |«      }| j                  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@   st   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j‘j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% kÓ2ˆŒ	ÜŒg�sÑ$ [ÀÐ$ÔFØ!×0Ñ0ˆÔØˆ
r   Úsample_shapec                 ó  — | j                  |«      }t        j                  | j                  j                  «      }t        j
                  j                  «       r¯t        j                  || j                  j                  | j                  j                  ¬«      dz  dz
  }| j                  | j                  |j                  «       z  t        j                  |j                  «       j                  |j                  ¬«       «      z  z
  S | j                  j                  |«      j!                  |j"                  dz
  d«      }| j                  | j                  |j                  «       z  t        j                  |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ˆÜ—‘˜DŸH™HŸN™NÓ+ˆÜ�8‰8×&Ñ&Ô(ä—
‘
˜5¨¯©¯©¸t¿x¹x¿¹ÔOÐRSÑSÐVWÑWˆAØ—8‘8˜dŸj™j¨1¯6©6«8Ñ3´e·k±kØ—‘“—‘ 5§:¡:�Ó.Ð.ó7ñ ñ ð ð �H‰H�L‰L˜Ó×(Ñ(¨¯©°Q©¸Ó:ˆð �x‰x˜$Ÿ*™* q§v¡v£xÑ/´%·+±+¸q¿u¹u»w¸hÓ2GÑGÑGÐGr   c                 óâ   — | j                   r| j                  |«       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   sS   € Ø×ÒØ×!Ñ! %Ô(Ü—	‘	˜!˜dŸj™j™.Ó)Ð)¬E¯I©I°e¸d¿h¹hÑ6FÓ,GÈ$Ï*É*Ñ,TÑTÐTr   c                 ó   — | j                   r| j                  |«       dd|| j                  z
  j                  «       z  t	        j
                  || j                  z
  j                  «        | j                  z  «      z  z
  S )Nç      à?)r.   rG   r   r<   r$   Úexpm1r>   r   rI   s     r   ÚcdfzLaplace.cdf\   sp   € Ø×ÒØ×!Ñ! %Ô(Ø�S˜E D§H¡HÑ,×2Ñ2Ó4Ñ4´u·{±{Ø�d—h‘hÑ×#Ñ#Ó%Ð%¨¯
©
Ñ2ó8
ñ 
ñ 
ð 	
r   c                 ó®   — |dz
  }| j                   | j                  |j                  «       z  t        j                  d|j                  «       z  «      z  z
  S )NrM   éþÿÿÿ)r   r   r<   r$   r=   r>   )r   rJ   Úterms      r   ÚicdfzLaplace.icdfc   sA   € Ø�s‰{ˆØ�x‰x˜$Ÿ*™*¨§{¡{£}Ñ4´u·{±{À2ÈÏÉË
Á?Ó7SÑSÑSÐSr   c                 óL   — dt        j                  d| j                  z  «      z   S )Nr5   r   )r$   rH   r   r   s    r   ÚentropyzLaplace.entropyg   s   € Ø”5—9‘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Ñ9MÑN€OØ×Ñ€GØ€Kàð�fò ó ðð ð�fò ó ðð ð%˜&ò %ó ð%ð ð%˜ò %ó ð%ð &*ñ	Cà�e‰^ðCð ˜‰~ðCð ˜d‘{ð	Cð
 
õCõð -7¨E¯J©J«Lñ H Eð H¸Vó HòUò

òTö-r   )r$   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r	   © r   r   ú<module>ri      s0   ðó Ý Ý +Ý 9Ý 3ß &ð ˆ+€ôZ-ˆlõ Z-r   