Ë
    óÍ:j‡
  ã                   óx   — d dl mZ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 dlmZmZ dgZ G d	„ de«      Zy)
é    )ÚOptionalÚUnionN)ÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚExponentialc                   óP  ‡ — e Zd ZdZdej
                  iZej                  Zd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deeef   dee   dd
fˆ fd„Zdˆ fd„	Z ej0                  «       fdedefd„Zd„ Zd„ Zd„ Zd„ Zedee   fd„«       Z d„ Z!ˆ xZ"S )r   an  
    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   — | j                   j                  «       S ©N©r   Ú
reciprocal©Úselfs    út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torch/distributions/exponential.pyÚmeanzExponential.mean#   ó   € à�y‰y×#Ñ#Ó%Ð%ó    c                 ó@   — t        j                  | j                  «      S r   )ÚtorchÚ
zeros_liker   r   s    r   ÚmodezExponential.mode'   s   € ä×Ñ §	¡	Ó*Ð*r   c                 ó6   — | j                   j                  «       S r   r   r   s    r   ÚstddevzExponential.stddev+   r   r   c                 ó8   — | j                   j                  d«      S )Néþÿÿÿ)r   Úpowr   s    r   ÚvariancezExponential.variance/   s   € à�y‰y�}‰}˜RÓ Ð r   NÚvalidate_argsc                 óÈ   •— t        |«      \  | _        t        |t        «      rt	        j
                  «       n| j                  j                  «       }t        ‰| �!  ||¬«       y )N©r#   )	r   r   Ú
isinstancer	   r   ÚSizeÚsizeÚsuperÚ__init__)r   r   r#   Úbatch_shapeÚ	__class__s       €r   r*   zExponential.__init__3   sF   ø€ ô
 % TÓ*‰ˆŒÜ&0°´wÔ&?”e—j‘j”lÀTÇYÁYÇ^Á^ÓEUˆÜ‰Ñ˜°MÐÕBr   c                 óê   •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        t        t        |�  |d¬«       | j                  |_        |S )NFr%   )	Ú_get_checked_instancer   r   r'   r   Úexpandr)   r*   Ú_validate_args)r   r+   Ú	_instanceÚnewr,   s       €r   r/   zExponential.expand<   s`   ø€ Ø×(Ñ(¬°iÓ@ˆÜ—j‘j Ó-ˆØ—9‘9×#Ñ# KÓ0ˆŒÜŒk˜3Ñ(¨ÀEÐ(ÔJØ!×0Ñ0ˆÔØˆ
r   Úsample_shapec                 ó�   — | j                  |«      }| j                  j                  |«      j                  «       | j                  z  S r   )Ú_extended_shaper   r2   Úexponential_)r   r3   Úshapes      r   ÚrsamplezExponential.rsampleD   s7   € Ø×$Ñ$ \Ó2ˆØ�y‰y�}‰}˜UÓ#×0Ñ0Ó2°T·Y±YÑ>Ð>r   c                 ó�   — | j                   r| j                  |«       | j                  j                  «       | j                  |z  z
  S r   )r0   Ú_validate_sampler   Úlog©r   Úvalues     r   Úlog_probzExponential.log_probH   s7   € Ø×ÒØ×!Ñ! %Ô(Ø�y‰y�}‰}‹ §¡¨UÑ!2Ñ2Ð2r   c                 óˆ   — | j                   r| j                  |«       dt        j                  | j                   |z  «      z
  S )Né   )r0   r:   r   Úexpr   r<   s     r   ÚcdfzExponential.cdfM   s8   € Ø×ÒØ×!Ñ! %Ô(Ø”5—9‘9˜dŸi™i˜Z¨%Ñ/Ó0Ñ0Ð0r   c                 óJ   — t        j                  | «       | j                  z  S r   )r   Úlog1pr   r<   s     r   ÚicdfzExponential.icdfR   s   € Ü—‘˜U˜FÓ#Ð# d§i¡iÑ/Ð/r   c                 óF   — dt        j                  | j                  «      z
  S )Ng      ð?)r   r;   r   r   s    r   ÚentropyzExponential.entropyU   s   € Ø”U—Y‘Y˜tŸy™yÓ)Ñ)Ð)r   c                 ó   — | j                    fS r   )r   r   s    r   Ú_natural_paramszExponential._natural_paramsX   s   € à—‘�
ˆ}Ðr   c                 ó0   — t        j                  | «       S r   )r   r;   )r   Úxs     r   Ú_log_normalizerzExponential._log_normalizer\   s   € Ü—	‘	˜1˜"“ˆ~Ðr   r   )#Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚnonnegativeÚsupportÚhas_rsampleÚ_mean_carrier_measureÚpropertyr   r   r   r   r"   r   Úfloatr   Úboolr*   r/   r   r'   r
   r8   r>   rB   rE   rG   ÚtuplerI   rL   Ú__classcell__)r,   s   @r   r   r      s.  ø„ ñð ˜{×3Ñ3Ð4€OØ×%Ñ%€GØ€KØÐàð&�fò &ó ð&ð ð+�fò +ó ð+ð ð&˜ò &ó ð&ð ð!˜&ò !ó ð!ð )-ñCà�F˜E�MÑ"ðCð   ‘~ðCð 
õ	Cõð -7¨E¯J©J«Lñ ? Eð ?¸Vó ?ò3ò
1ò
0ò*ð ð  v¡ò ó ðör   )Útypingr   r   r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr	   r
   Ú__all__r   © r   r   ú<module>rc      s2   ðç "ã Ý Ý +Ý <Ý 3ß &ð ˆ/€ôNÐ#õ Nr   