Ë
    P/æj›  ã                   ó`   — 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         €ú]/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/distributions/pareto.pyr   zPareto.__init__   sS   ø€ Ü!.¨u°eÓ!<ÑˆŒ
�D”JÜ §
¡
¸-ÔHˆ	Ü"“n¤o¸!À4Ç:Á:Ô&NÐOˆ
Ü‰Ñ˜ J¸mÐÕ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   ø€ Ø×(Ñ(¬°Ó;ˆØ—J‘J×%Ñ% kÓ2ˆŒ	Ø—J‘J×%Ñ% kÓ2ˆŒ	Ü‰w‰~˜k°Sˆ~Ó9Ð9r   c                 ód   — | j                   j                  d¬«      }|| j                  z  |dz
  z  S )Né   ©Úmin)r   Úclampr   ©r   Úas     r   ÚmeanzPareto.mean)   s2   € ð �J‰J×Ñ ÐÓ#ˆØ�4—:‘:‰~  Q¡Ñ'Ð'r   c                 ó   — | j                   S ©N)r   ©r   s    r   ÚmodezPareto.mode/   s   € à�z‰zÐ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   € ð �J‰J×Ñ ÐÓ#ˆØ�z‰z�~‰~˜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   € Ø—
‘
˜TŸZ™ZÑ'×,Ñ,Ó.°!°d·j±j×6KÑ6KÓ6MÑ2MÑ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ÑT€Oõ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   