
    }Yh	                         d dl mZm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 dlmZ d dlmZ d	gZ G d
 d	e
          ZdS )    )OptionalUnion)Tensor)constraints)Exponential)TransformedDistribution)AffineTransformExpTransform)broadcast_all)_sizeParetoc            	       P    e Zd ZdZej        ej        dZ	 ddeee	f         deee	f         de
e         ddf fdZ	 dd	ed
e
d          dd f fdZedefd            Zedefd            Zedefd            Z ej        dd          dej        fd            ZdefdZ xZS )r   a  
    Samples from a Pareto Type 1 distribution.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = Pareto(torch.tensor([1.0]), torch.tensor([1.0]))
        >>> m.sample()  # sample from a Pareto distribution with scale=1 and alpha=1
        tensor([ 1.5623])

    Args:
        scale (float or Tensor): Scale parameter of the distribution
        alpha (float or Tensor): Shape parameter of the distribution
    )alphascaleNr   r   validate_argsreturnc                     t          ||          \  | _        | _        t          | j        |          }t	                      t          d| j                  g}t                                          |||           d S )N)r   r   )locr   )r   r   r   r   r
   r	   super__init__)selfr   r   r   	base_dist
transforms	__class__s         l/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torch/distributions/pareto.pyr   zPareto.__init__!   ss     "/ue!<!<
DJ
-HHH	"nno!4:&N&N&NO
JmLLLLL    batch_shape	_instancec                     |                      t          |          }| j                            |          |_        | j                            |          |_        t                                          ||          S )N)r   )_get_checked_instancer   r   expandr   r   )r   r   r   newr   s       r   r!   zPareto.expand,   sb     ((;;J%%k22	J%%k22	ww~~kS~999r   c                 X    | j                             d          }|| j        z  |dz
  z  S )N   min)r   clampr   r   as     r   meanzPareto.mean4   s1     J##4:~Q''r   c                     | j         S N)r   r   s    r   modezPareto.mode:   s
    zr   c                     | j                             d          }| j                            d          |z  |dz
                      d          |dz
  z  z  S )N   r%   r$   )r   r'   r   powr(   s     r   variancezPareto.variance>   sQ     J##z~~a  1$QA!a%(@AAr   Fr   )is_discrete	event_dimc                 4    t          j        | j                  S r,   )r   greater_than_eqr   r-   s    r   supportzPareto.supportD   s    *4:666r   c                 ~    | j         | j        z                                  d| j                                        z   z   S )Nr$   )r   r   log
reciprocalr-   s    r   entropyzPareto.entropyH   s5    
TZ',,..!dj6K6K6M6M2MNNr   r,   )__name__
__module____qualname____doc__r   positivearg_constraintsr   r   floatr   boolr   r   r!   propertyr*   r.   r2   dependent_property
Constraintr7   r;   __classcell__)r   s   @r   r   r      s         !, 4{?STTO )-		M 	MVU]#	M VU]#	M  ~		M
 
	M 	M 	M 	M 	M 	M CG: : :-5h-?:	: : : : : : (f ( ( ( X(
 f    X B& B B B XB
 $[#CCC7/ 7 7 7 DC7O O O O O O O O Or   N)typingr   r   torchr   torch.distributionsr   torch.distributions.exponentialr   ,torch.distributions.transformed_distributionr   torch.distributions.transformsr	   r
   torch.distributions.utilsr   torch.typesr   __all__r    r   r   <module>rR      s    " " " " " " " "       + + + + + + 7 7 7 7 7 7 P P P P P P H H H H H H H H 3 3 3 3 3 3       *:O :O :O :O :O$ :O :O :O :O :Or   