ó
    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)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚExponentialc                   ól  ^ • \ rS rSrSrS\R                  0r\R                  r	S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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\\   4S j5       rS r Sr!U =r"$ )r	   é   aJ  
Creates a Exponential distribution parameterized by :attr:`rate`.

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = Exponential(torch.tensor([1.0]))
    >>> m.sample()  # Exponential distributed with rate=1
    tensor([ 0.1046])

Args:
    rate (float or Tensor): rate = 1 / scale of the distribution
ÚrateTr   Úreturnc                 ó6   • U R                   R                  5       $ ©N©r   Ú
reciprocal©Úselfs    Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/exponential.pyÚmeanÚExponential.mean#   ó   € à�y‰y×#Ñ#Ó%Ð%ó    c                 óB   • [         R                  " U R                  5      $ r   )ÚtorchÚ
zeros_liker   r   s    r   ÚmodeÚExponential.mode'   s   € ä×Ò §	¡	Ó*Ð*r   c                 ó6   • U R                   R                  5       $ r   r   r   s    r   ÚstddevÚExponential.stddev+   r   r   c                 ó8   • U R                   R                  S5      $ )Néþÿÿÿ)r   Úpowr   s    r   ÚvarianceÚExponential.variance/   s   € à�y‰y�}‰}˜RÓ Ð r   NÚvalidate_argsc                 óÌ   >• [        U5      u  U l        [        U[        5      (       a  [        R
                  " 5       OU R                  R                  5       n[        TU ]!  X2S9  g )N©r&   )	r   r   Ú
isinstancer   r   ÚSizeÚsizeÚsuperÚ__init__)r   r   r&   Úbatch_shapeÚ	__class__s       €r   r-   ÚExponential.__init__3   sG   ø€ ô
 % TÓ*‰ˆŒÜ&0°´w×&?Ñ&?”e—j’j”lÀTÇYÁYÇ^Á^ÓEUˆÜ‰Ñ˜ÐÒBr   c                 óæ   >• U R                  [        U5      n[        R                  " U5      n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-   Ú_validate_args)r   r.   Ú	_instanceÚnewr/   s       €r   r3   ÚExponential.expand<   s`   ø€ Ø×(Ñ(¬°iÓ@ˆÜ—j’j Ó-ˆØ—9‘9×#Ñ# KÓ0ˆŒÜŒk˜3Ñ(¨ÀEÐ(ÑJØ!×0Ñ0ˆÔØˆ
r   Úsample_shapec                 ó�   • U R                  U5      nU R                  R                  U5      R                  5       U R                  -  $ r   )Ú_extended_shaper   r6   Úexponential_)r   r8   Úshapes      r   ÚrsampleÚExponential.rsampleD   s7   € Ø×$Ñ$ \Ó2ˆØ�y‰y�}‰}˜UÓ#×0Ñ0Ó2°T·Y±YÑ>Ð>r   c                 óš   • U R                   (       a  U R                  U5        U R                  R                  5       U R                  U-  -
  $ r   )r4   Ú_validate_sampler   Úlog©r   Úvalues     r   Úlog_probÚExponential.log_probH   s7   € Ø××Ø×!Ñ! %Ô(Ø�y‰y�}‰}‹ §¡¨UÑ!2Ñ2Ð2r   c                 ó”   • U R                   (       a  U R                  U5        S[        R                  " U R                  * U-  5      -
  $ )Né   )r4   r@   r   Úexpr   rB   s     r   ÚcdfÚExponential.cdfM   s8   € Ø××Ø×!Ñ! %Ô(Ø”5—9’9˜dŸi™i˜Z¨%Ñ/Ó0Ñ0Ð0r   c                 óL   • [         R                  " U* 5      * U R                  -  $ r   )r   Úlog1pr   rB   s     r   ÚicdfÚExponential.icdfR   s   € Ü—’˜U˜FÓ#Ð# d§i¡iÑ/Ð/r   c                 óH   • S[         R                  " U R                  5      -
  $ )Ng      ð?)r   rA   r   r   s    r   ÚentropyÚExponential.entropyU   s   € Ø”U—Y’Y˜tŸy™yÓ)Ñ)Ð)r   c                 ó   • U R                   * 4$ r   ©r   r   s    r   Ú_natural_paramsÚExponential._natural_paramsX   s   € à—‘�
ˆ}Ðr   c                 ó2   • [         R                  " U* 5      * $ r   )r   rA   )r   Úxs     r   Ú_log_normalizerÚExponential._log_normalizer]   s   € Ü—	’	˜1˜"“ˆ~Ðr   rS   r   )#Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚpositiveÚarg_constraintsÚnonnegativeÚsupportÚhas_rsampleÚ_mean_carrier_measureÚpropertyr   r   r   r   r$   ÚfloatÚboolr-   r3   r   r*   r   r=   rD   rI   rM   rP   ÚtuplerT   rX   Ú__static_attributes__Ú__classcell__)r/   s   @r   r	   r	      s2  ø† ñð ˜{×3Ñ3Ð4€OØ×%Ñ%€GØ€KØÐàð&�fó &ó ð&ð ð+�fó +ó ð+ð ð&˜ó &ó ð&ð ð!˜&ó !ó ð!ð &*ñCà�u‰nðCð ˜d‘{ðCð 
÷	Cð C÷ð -2¯JªJ«Lñ ? Eð ?¸Võ ?ò3ò
1ò
0ò*ð ð  v¡ó ó ð÷ð r   )r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r	   © r   r   Ú<module>rq      s1   ðó Ý Ý +Ý <Ý 3ß &ð ˆ/€ôPÐ#õ Pr   