§
    Ÿ²ÅjT  ã                   ól   — d dl 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gZ G d„ de¦  «        ZdS )	é    )ÚNumberN)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_sizeÚLaplacec                   ó  ‡ — e Zd ZdZej        ej        dœZej        ZdZ	e
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Zdˆ fd	„	Zdˆ fd
„	Z ej        ¦   «         fdedej        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ÚscaleTc                 ó   — | j         S ©N©r
   ©Úselfs    úLC:\Projects\Historical\venv\Lib\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   Nc                 ó6  •— t          ||¦  «        \  | _        | _        t          |t          ¦  «        r)t          |t          ¦  «        rt          j        ¦   «         }n| j                             ¦   «         }t          ¦   «          	                    ||¬¦  «         d S )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   s}   ø€ Ý,¨S°%Ñ8Ô8ÑˆŒ�$”*Ý�c�6Ñ"Ô"ð 	*¥z°%½Ñ'@Ô'@ð 	*Ýœ*™,œ,ˆ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.expand9   s†   ø€ Ø×(Ò(­°)Ñ<Ô<ˆÝ”j Ñ-Ô-ˆØ”(—/’/ +Ñ.Ô.ˆŒØ”J×%Ò% kÑ2Ô2ˆŒ	Ý�g�sÑÔ×$Ò$ [ÀÐ$ÑFÔFÐFØ!Ô0ˆÔØˆ
r   Úsample_shapeÚreturnc                 óÔ  — |                       |¦  «        }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
   r2   Ú_CÚ_get_tracing_stateÚrandr3   r   ÚsignÚlog1pÚabsÚclampÚtinyr.   Úuniform_Úeps)r   r/   Úshaper7   Úus        r   ÚrsamplezLaplace.rsampleB   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_probP   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,   rF   r
   r;   r"   Úexpm1r=   r   rH   s     r   ÚcdfzLaplace.cdfU   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 )NrL   éþÿÿÿ)r
   r   r;   r"   r<   r=   )r   rI   Úterms      r   ÚicdfzLaplace.icdf\   sB   € Ø�s‰{ˆØŒx˜$œ*¨§{¢{¡}¤}Ñ4µu´{À2ÈÏÊÉ
Ì
Á?Ñ7SÔ7SÑSÑSÐSr   c                 ó@   — dt          j        d| j        z  ¦  «        z   S )Nr4   r   )r"   rG   r   r   s    r   ÚentropyzLaplace.entropy`   s   € Ø•5”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   ÚTensorrD   rJ   rN   rR   rT   Ú__classcell__)r(   s   @r   r   r      sv  ø€ € € € € ðð ð *Ô.¸Ô9MÐNÐN€OØÔ€GØ€Kàðð ñ „Xðð ðð ñ „Xðð ð%ð %ñ „Xð%ð ð%ð %ñ „Xð%ðCð Cð Cð Cð Cð Cðð ð ð ð ð ð -7¨E¬J©L¬Lð Hð H Eð H¸U¼\ð Hð Hð Hð HðUð Uð Uð

ð 
ð 
ðTð Tð Tð-ð -ð -ð -ð -ð -ð -r   )Únumbersr   r"   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr   Ú__all__r   © r   r   ú<module>rh      s¯   ðà Ð Ð Ð Ð Ð à €€€Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð ð ˆ+€ðS-ð S-ð S-ð S-ð S-ˆlñ S-ô S-ð S-ð S-ð S-r   