Ë
    f^(h  ã                   ó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                   ó   ‡ — 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ˆ 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/skyplay_api_hub/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   c                 óø   •— t        ||«      \  | _        | _        t        |t        «      r%t        |t        «      rt        j                  «       }n| j                  j                  «       }t        ‰| �%  ||¬«       y )N©Úvalidate_args)
r   r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   r"   Úbatch_shapeÚ	__class__s        €r   r(   zLaplace.__init__1   sW   ø€ Ü,¨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.expand9   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.rsampleB   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_probP   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.cdfU   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.icdf\   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.entropy`   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(   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õð -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>rg      s.   ðã Ý Ý +Ý 9Ý 3ß &ð ˆ+€ôT-ˆlõ T-r   