
    [Th                     h    S SK r S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
  S/r " S S\5      rg)	    N)Tensor)constraints)Distribution)broadcast_all)_Number_sizeLaplacec                   <  ^  \ rS rSrSr\R                  \R                  S.r\R                  r	Sr
\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S	 j5       rSU 4S
 jjrSU 4S jjr\R(                  " 5       4S\S\4S jjrS rS rS rS rSrU =r$ )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                     U R                   $ Nr   selfs    S/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributions/laplace.pymeanLaplace.mean!       xx    c                     U R                   $ r   r   r   s    r   modeLaplace.mode%   r   r   c                 >    SU R                   R                  S5      -  $ N   )r   powr   s    r   varianceLaplace.variance)   s    4::>>!$$$r   c                      SU R                   -  $ )Ng;f?)r   r   s    r   stddevLaplace.stddev-   s    $**$$r   c                   > [        X5      u  U l        U l        [        U[        5      (       a+  [        U[        5      (       a  [
        R                  " 5       nOU R                  R                  5       n[        TU ]%  XCS9  g )Nvalidate_args)
r   r   r   
isinstancer   torchSizesizesuper__init__)r   r   r   r'   batch_shape	__class__s        r   r-   Laplace.__init__1   sY    ,S8$*c7##
5'(B(B**,K((--/KBr   c                 &  > U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        [        [        U]#  USS9  U R                  Ul	        U$ )NFr&   )
_get_checked_instancer	   r)   r*   r   expandr   r,   r-   _validate_args)r   r.   	_instancenewr/   s       r   r3   Laplace.expand9   st    (()<jj-((//+.JJ%%k2	gs$[$F!00
r   sample_shapec                 "   U R                  U5      n[        R                  " U R                  R                  5      n[        R
                  R                  5       (       a  [        R                  " X R                  R                  U R                  R                  S9S-  S-
  nU R                  U R                  UR                  5       -  [        R                  " UR                  5       R                  UR                  S9* 5      -  -
  $ U R                  R                  U5      R!                  UR"                  S-
  S5      nU R                  U R                  UR                  5       -  [        R                  " UR                  5       * 5      -  -
  $ )N)dtypedevicer      )min)_extended_shaper)   finfor   r:   _C_get_tracing_staterandr;   r   signlog1pabsclamptinyr6   uniform_eps)r   r8   shaper?   us        r   rsampleLaplace.rsampleB   s   $$\2DHHNN+88&&((

5txxORSSVWWA88djj16683ekk5::..7    HHLL((Q: xx$**qvvx/%++quuwh2GGGGr   c                     U R                   (       a  U R                  U5        [        R                  " SU R                  -  5      * [        R
                  " XR                  -
  5      U R                  -  -
  $ r   )r4   _validate_sampler)   logr   rE   r   r   values     r   log_probLaplace.log_probP   sQ    !!%(		!djj.))EIIehh6F,G$**,TTTr   c                    U R                   (       a  U R                  U5        SSXR                  -
  R                  5       -  [        R
                  " XR                  -
  R                  5       * U R                  -  5      -  -
  $ )N      ?)r4   rO   r   rC   r)   expm1rE   r   rQ   s     r   cdfLaplace.cdfU   sl    !!%(SEHH,2244u{{hh##%%

28
 
 
 	
r   c                     US-
  nU R                   U R                  UR                  5       -  [        R                  " SUR                  5       -  5      -  -
  $ )NrV   )r   r   rC   r)   rD   rE   )r   rR   terms      r   icdfLaplace.icdf\   sA    s{xx$**{{}4u{{2
?7SSSSr   c                 N    S[         R                  " SU R                  -  5      -   $ )Nr<   r   )r)   rP   r   r   s    r   entropyLaplace.entropy`   s    599Q^,,,r   r   )__name__
__module____qualname____firstlineno____doc__r   realpositivearg_constraintssupporthas_rsamplepropertyr   r   r   r    r#   r-   r3   r)   r*   r   rL   rS   rX   r]   r`   __static_attributes____classcell__)r/   s   @r   r	   r	      s     *..9M9MNOGKf   f   %& % % % % %C -2JJL 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>ru      s.      + 9 3 & +T-l T-r   