Ë
    P/æjÙ	  ã                   ód   — 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y)	é    )ÚNumberN)Úconstraints)ÚExponentialFamily)Úbroadcast_all)Ú_sizeÚExponentialc                   ó   ‡ — e Zd ZdZdej
                  iZej                  Zd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e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   c                 ó6   — | j                   j                  «       S ©N©r
   Ú
reciprocal©Úselfs    úb/root/repos/pocs/video-evals/.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   c                 óÈ   •— t        |«      \  | _        t        |t        «      rt	        j
                  «       n| j                  j                  «       }t        ‰| �!  ||¬«       y )N©Úvalidate_args)	r   r
   Ú
isinstancer   r   ÚSizeÚsizeÚsuperÚ__init__)r   r
   r!   Úbatch_shapeÚ	__class__s       €r   r&   zExponential.__init__1   sD   ø€ Ü$ TÓ*‰ˆŒÜ&0°´vÔ&>”e—j‘j”lÀDÇIÁIÇNÁNÓDTˆÜ‰Ñ˜°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.expand6   s`   ø€ Ø×(Ñ(¬°iÓ@ˆÜ—j‘j Ó-ˆØ—9‘9×#Ñ# KÓ0ˆŒÜŒk˜3Ñ(¨ÀEÐ(ÔJØ!×0Ñ0ˆÔØˆ
r   Úsample_shapeÚreturnc                 ó�   — | j                  |«      }| j                  j                  |«      j                  «       | j                  z  S r   )Ú_extended_shaper
   r.   Úexponential_)r   r/   Úshapes      r   ÚrsamplezExponential.rsample>   s7   € Ø×$Ñ$ \Ó2ˆØ�y‰y�}‰}˜UÓ#×0Ñ0Ó2°T·Y±YÑ>Ð>r   c                 ó�   — | j                   r| j                  |«       | j                  j                  «       | j                  |z  z
  S r   )r,   Ú_validate_sampler
   Úlog©r   Úvalues     r   Úlog_probzExponential.log_probB   s7   € Ø×ÒØ×!Ñ! %Ô(Ø�y‰y�}‰}‹ §¡¨UÑ!2Ñ2Ð2r   c                 óˆ   — | j                   r| j                  |«       dt        j                  | j                   |z  «      z
  S )Né   )r,   r7   r   Úexpr
   r9   s     r   ÚcdfzExponential.cdfG   s8   € Ø×ÒØ×!Ñ! %Ô(Ø”5—9‘9˜dŸi™i˜Z¨%Ñ/Ó0Ñ0Ð0r   c                 óJ   — t        j                  | «       | j                  z  S r   )r   Úlog1pr
   r9   s     r   ÚicdfzExponential.icdfL   s   € Ü—‘˜U˜FÓ#Ð# d§i¡iÑ/Ð/r   c                 óF   — dt        j                  | j                  «      z
  S )Ng      ð?)r   r8   r
   r   s    r   ÚentropyzExponential.entropyO   s   € Ø”U—Y‘Y˜tŸy™yÓ)Ñ)Ð)r   c                 ó   — | j                    fS r   )r
   r   s    r   Ú_natural_paramszExponential._natural_paramsR   s   € à—‘�
ˆ}Ðr   c                 ó0   — t        j                  | «       S r   )r   r8   )r   Úxs     r   Ú_log_normalizerzExponential._log_normalizerV   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+   r   r#   r   ÚTensorr5   r;   r?   rB   rD   rF   rI   Ú__classcell__)r(   s   @r   r   r      sÚ   ø„ ñð ˜{×3Ñ3Ð4€OØ×%Ñ%€GØ€KØÐàñ&ó ð&ð ñ+ó ð+ð ñ&ó ð&ð ñ!ó ð!õCõ
ð -7¨E¯J©J«Lñ ? Eð ?¸U¿\¹\ó ?ò3ò
1ò
0ò*ð ñó ðör   )Únumbersr   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   Ú__all__r   © r   r   ú<module>r^      s/   ðå ã Ý +Ý <Ý 3Ý ð ˆ/€ôIÐ#õ Ir   