Ë
    óÍ:j¯  ã                   óx   — 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y)
é    )ÚOptionalÚUnionN)ÚTensor)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_NumberÚ_sizeÚLaplacec            	       óN  ‡ — 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    úp/home/mcse/projects/srt_converter/srt-converter-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   r5   Ú_CÚ_get_tracing_stateÚrandr6   r   ÚsignÚlog1pÚabsÚclampÚtinyr2   Úuniform_Úeps)r   r3   Úshaper:   Ú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   )r0   Ú_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ç      à?)r0   rI   r   r>   r&   Úexpm1r@   r   rK   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 )NrO   éþÿÿÿ)r   r   r>   r&   r?   r@   )r   rL   Ú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 )Nr7   r   )r&   rJ   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!   r   Úfloatr   Úboolr*   r/   r&   r'   r
   rG   rM   rQ   rU   rW   Ú__classcell__)r,   s   @r   r   r      s#  ø„ ñð *×.Ñ.¸×9MÑ9MÑN€OØ×Ñ€GØ€Kàð�fò ó ðð ð�fò ó ðð ð%˜&ò %ó ð%ð ð%˜ò %ó ð%ð )-ñ	Cà�6˜5�=Ñ!ðCð �V˜U�]Ñ#ðCð   ‘~ð	Cð
 
õCõð -7¨E¯J©J«Lñ H Eð H¸Vó HòUò

òTö-r   )Útypingr   r   r&   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr	   r
   Ú__all__r   © r   r   ú<module>rl      s1   ðç "ã Ý Ý +Ý 9Ý 3ß &ð ˆ+€ôY-ˆlõ Y-r   