
    #h	                     `    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gZ	 G d de          Z
dS )    )NumberN)constraints)ExponentialFamily)broadcast_all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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                 4    | j                                         S Nr	   
reciprocalselfs    _/var/www/html/auto_sub_bot/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   Nc                     t          |          \  | _        t          |t                    rt	          j                    n| j                                        }t                                          ||           d S )Nvalidate_args)	r   r	   
isinstancer   r   Sizesizesuper__init__)r   r	   r    batch_shape	__class__s       r   r%   zExponential.__init__.   sa    $T**&0v&>&>TejlllDINNDTDT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.expand3   sq    ((i@@j--9##K00k3((E(JJJ!0
r   c                     |                      |          }| j                            |                                          | j        z  S r   )_extended_shaper	   r-   exponential_)r   sample_shapeshapes      r   rsamplezExponential.rsample;   s<    $$\22y}}U##0022TY>>r   c                     | j         r|                     |           | j                                        | j        |z  z
  S r   )r+   _validate_sampler	   logr   values     r   log_probzExponential.log_prob?   s=     	)!!%(((y}}U!222r   c                 z    | j         r|                     |           dt          j        | j         |z            z
  S )N   )r+   r5   r   expr	   r7   s     r   cdfzExponential.cdfD   s?     	)!!%(((59diZ%/0000r   c                 >    t          j        |            | j        z  S r   )r   log1pr	   r7   s     r   icdfzExponential.icdfI   s    UF###di//r   c                 :    dt          j        | j                  z
  S )Ng      ?)r   r6   r	   r   s    r   entropyzExponential.entropyL   s    UYty))))r   c                     | j          fS r   )r	   r   s    r   _natural_paramszExponential._natural_paramsO   s    
}r   c                 .    t          j        |            S r   )r   r6   )r   xs     r   _log_normalizerzExponential._log_normalizerS   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"   r3   r9   r=   r@   rB   rD   rG   __classcell__)r'   s   @r   r   r      s~         {34O%GK& & X& + + X+ & & X& ! ! X!C C C C C C
      $.5:<< ? ? ? ?3 3 3
1 1 1
0 0 0* * *   X      r   )numbersr   r   torch.distributionsr   torch.distributions.exp_familyr   torch.distributions.utilsr   __all__r    r   r   <module>rZ      s           + + + + + + < < < < < < 3 3 3 3 3 3/I I I I I# I I I I Ir   