ó
    Eñi¢  ã                   ó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            	       ód  ^ • \ 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S\\-  S\\-  S\S
-  SS
4U 4S j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    ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/laplace.pyÚmeanÚLaplace.mean#   ó   € à�x‰xˆó    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   Nr   r   Úvalidate_argsc                 ó  >• [        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©r%   )
r   r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   r%   Úbatch_shapeÚ	__class__s        €r   r-   ÚLaplace.__init__3   s[   ø€ ô  -¨SÓ8ÑˆŒ�$”*Ü�cœ7×#Ñ#¬
°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.expand@   st   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j’j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% kÓ2ˆŒ	ÜŒg�sÑ$ [ÀÐ$Ñ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.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                 óî   • 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_probW   sQ   € Ø××Ø×!Ñ! %Ô(Ü—	’	˜!˜dŸj™j™.Ó)Ð)¬E¯IªI°e¿h¹hÑ6FÓ,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.cdf\   sl   € Ø××Ø×!Ñ! %Ô(Ø�S˜E§H¡HÑ,×2Ñ2Ó4Ñ4´u·{²{Ø—h‘hÑ×#Ñ#Ó%Ð%¨¯
©
Ñ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.icdfc   sA   € Ø�s‰{ˆØ�x‰x˜$Ÿ*™*¨§{¡{£}Ñ4´u·{²{À2ÈÏÉË
Á?Ó7SÑSÑSÐSr   c                 óN   • S[         R                  " SU R                  -  5      -   $ )Nr<   r   )r)   rP   r   r   s    r   ÚentropyÚLaplace.entropyg   s   € Ø”5—9’9˜Q §¡™^Ó,Ñ,Ð,r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsampleÚpropertyr   r   r   r    r#   ÚfloatÚboolr-   r3   r)   r*   r   rL   rS   rX   r]   r`   Ú__static_attributes__Ú__classcell__)r/   s   @r   r	   r	      s"  ø† ñð  *×.Ñ.¸×9MÑ9MÑN€OØ×Ñ€GØ€Kàð�fó ó ðð ð�fó ó ðð ð%˜&ó %ó ð%ð ð%˜ó %ó ð%ð &*ñ	Cà�e‰^ðCð ˜‰~ðCð ˜d‘{ð	Cð
 
÷Cð C÷ð -2¯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>rw      s0   ðó Ý Ý +Ý 9Ý 3ß &ð ˆ+€ôZ-ˆlõ Z-r   