
    Ǆg                     `    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gZ G d de      Zy)	    )constraints)Exponential)TransformedDistribution)AffineTransformExpTransform)broadcast_allParetoc                        e Zd ZdZej
                  ej
                  dZd fd	Zd fd	Ze	d        Z
e	d        Ze	d        Z ej                  dd	
      d        Z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scalec                     t        ||      \  | _        | _        t        | j                  |      }t	               t        d| j                        g}t        |   |||       y )N)validate_argsr   )locr   )r   r   r   r   r   r   super__init__)selfr   r   r   	base_dist
transforms	__class__s         b/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/torch/distributions/pareto.pyr   zPareto.__init__   sS    !.ue!<
DJ

-H	"no!4::&NO
JmL    c                     | j                  t        |      }| j                  j                  |      |_        | j                  j                  |      |_        t
        |   ||      S )N)	_instance)_get_checked_instancer	   r   expandr   r   )r   batch_shaper   newr   s       r   r   zPareto.expand#   sT    ((;JJ%%k2	JJ%%k2	w~kS~99r   c                 d    | j                   j                  d      }|| j                  z  |dz
  z  S )N   min)r   clampr   r   as     r   meanzPareto.mean)   s2     JJ#4::~Q''r   c                     | j                   S N)r   r   s    r   modezPareto.mode/   s    zzr   c                     | j                   j                  d      }| j                  j                  d      |z  |dz
  j                  d      |dz
  z  z  S )N   r    r   )r   r"   r   powr#   s     r   variancezPareto.variance3   sM     JJ#zz~~a 1$QA!a%(@AAr   Fr   )is_discrete	event_dimc                 @    t        j                  | j                        S r'   )r   greater_than_eqr   r(   s    r   supportzPareto.support9   s    **4::66r   c                     | j                   | j                  z  j                         d| j                  j                         z   z   S )Nr   )r   r   log
reciprocalr(   s    r   entropyzPareto.entropy=   s5    

TZZ',,.!djj6K6K6M2MNNr   r'   )__name__
__module____qualname____doc__r   positivearg_constraintsr   r   propertyr%   r)   r-   dependent_propertyr2   r6   __classcell__)r   s   @r   r	   r	      s     !, 4 4{?S?STOM: ( (
   B B
 $[##C7 D7Or   N)torch.distributionsr   torch.distributions.exponentialr   ,torch.distributions.transformed_distributionr   torch.distributions.transformsr   r   torch.distributions.utilsr   __all__r	    r   r   <module>rG      s,    + 7 P H 3 *2O$ 2Or   