§
    ŠŠtj¥
  ã                   óp   — 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dS )	é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚExponentialc                   óX  ‡ — 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z  ded
z  dd
fˆ fd„Zdˆ fd„	Z ej        ¦   «         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                 ó4   — | j                              ¦   «         S ©N©r   Ú
reciprocal©Úselfs    ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/exponential.pyÚmeanzExponential.mean#   ó   € àŒy×#Ò#Ñ%Ô%Ð%ó    c                 ó4   — t          j        | j        ¦  «        S r   )ÚtorchÚ
zeros_liker   r   s    r   ÚmodezExponential.mode'   s   € åÔ ¤	Ñ*Ô*Ð*r   c                 ó4   — | j                              ¦   «         S r   r   r   s    r   ÚstddevzExponential.stddev+   r   r   c                 ó6   — | j                              d¦  «        S )Néþÿÿÿ)r   Úpowr   s    r   ÚvariancezExponential.variance/   s   € àŒy�}Š}˜RÑ Ô Ð r   NÚvalidate_argsc                 óü   •— t          |¦  «        \  | _        t          |t          ¦  «        rt	          j        ¦   «         n| j                             ¦   «         }t          ¦   «                              ||¬¦  «         d S )N©r!   )	r   r   Ú
isinstancer   r   ÚSizeÚsizeÚsuperÚ__init__)r   r   r!   Úbatch_shapeÚ	__class__s       €r   r(   zExponential.__init__3   sc   ø€ õ
 % TÑ*Ô*‰ˆŒÝ&0°µwÑ&?Ô&?ÐU•e”j‘l”l�lÀTÄYÇ^Â^ÑEUÔEUˆÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBr   c                 ó  •— |                       t          |¦  «        }t          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<   sq   ø€ Ø×(Ò(­°iÑ@Ô@ˆÝ”j Ñ-Ô-ˆØ”9×#Ò# KÑ0Ô0ˆŒÝ�k˜3ÑÔ×(Ò(¨ÀEÐ(ÑJÔJÐJØ!Ô0ˆÔØˆ
r   Úsample_shapec                 ó”   — |                       |¦  «        }| j                             |¦  «                             ¦   «         | j        z  S r   )Ú_extended_shaper   r0   Úexponential_)r   r1   Úshapes      r   ÚrsamplezExponential.rsampleD   s<   € Ø×$Ò$ \Ñ2Ô2ˆØŒy�}Š}˜UÑ#Ô#×0Ò0Ñ2Ô2°T´YÑ>Ð>r   c                 ó‚   — | j         r|                      |¦  «         | j                             ¦   «         | j        |z  z
  S r   )r.   Ú_validate_sampler   Úlog©r   Úvalues     r   Úlog_probzExponential.log_probH   s=   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ØŒy�}Š}‰Œ ¤¨UÑ!2Ñ2Ð2r   c                 óz   — | j         r|                      |¦  «         dt          j        | j         |z  ¦  «        z
  S )Né   )r.   r8   r   Úexpr   r:   s     r   ÚcdfzExponential.cdfM   s?   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ø•5”9˜dœi˜Z¨%Ñ/Ñ0Ô0Ñ0Ð0r   c                 ó>   — t          j        | ¦  «         | j        z  S r   )r   Úlog1pr   r:   s     r   ÚicdfzExponential.icdfR   s   € Ý”˜U˜FÑ#Ô#Ð# d¤iÑ/Ð/r   c                 ó:   — dt          j        | j        ¦  «        z
  S )Ng      ð?)r   r9   r   r   s    r   ÚentropyzExponential.entropyU   s   € Ø•U”Y˜tœyÑ)Ô)Ñ)Ð)r   c                 ó   — | j          fS r   )r   r   s    r   Ú_natural_paramszExponential._natural_paramsX   s   € à”�
ˆ}Ðr   c                 ó.   — t          j        | ¦  «         S r   )r   r9   )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    ÚfloatÚboolr(   r-   r   r%   r   r6   r<   r@   rC   rE   ÚtuplerG   rJ   Ú__classcell__)r*   s   @r   r	   r	      s  ø€ € € € € ðð ð ˜{Ô3Ð4€OØÔ%€GØ€KØÐàð&�fð &ð &ð &ñ „Xð&ð ð+�fð +ð +ð +ñ „Xð+ð ð&˜ð &ð &ð &ñ „Xð&ð ð!˜&ð !ð !ð !ñ „Xð!ð &*ðCð Cà�u‰nðCð ˜d‘{ðCð 
ð	Cð Cð Cð Cð Cð Cðð ð ð ð ð ð -7¨E¬J©L¬Lð ?ð ? Eð ?¸Vð ?ð ?ð ?ð ?ð3ð 3ð 3ð
1ð 1ð 1ð
0ð 0ð 0ð*ð *ð *ð ð  v¤ð ð ð ñ „Xððð ð ð ð ð ð r   )r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r	   © r   r   ú<module>r`      s¸   ðð €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ/€ðPð Pð Pð Pð PÐ#ñ Pô Pð Pð Pð Pr   