
    IЦi
                         S SK r S SKJr  S SKrS SKJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJrJr  S/r " S	 S\5      rg)
    N)Number)constraints)TransformedDistribution)AffineTransformExpTransform)Uniform)broadcast_alleuler_constantGumbelc                      ^  \ rS rSrSr\R                  \R                  S.r\R                  r	SU 4S jjr
SU 4S jjrS r\S 5       r\S 5       r\S	 5       r\S
 5       rS rSrU =r$ )r      a  
Samples from a Gumbel Distribution.

Examples::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = Gumbel(torch.tensor([1.0]), torch.tensor([2.0]))
    >>> m.sample()  # sample from Gumbel distribution with loc=1, scale=2
    tensor([ 1.0124])

Args:
    loc (float or Tensor): Location parameter of the distribution
    scale (float or Tensor): Scale parameter of the distribution
locscalec                   > [        X5      u  U l        U l        [        R                  " U R                  R
                  5      n[        U[        5      (       a8  [        U[        5      (       a#  [        UR                  SUR                  -
  US9nO`[        [        R                  " U R                  UR                  5      [        R                  " U R                  SUR                  -
  5      US9n[        5       R                  [        S[        R                  " U R                  5      * S9[        5       R                  [        XR                  * S9/n[         TU ]E  XVUS9  g )N   )validate_argsr   r   )r	   r   r   torchfinfodtype
isinstancer   r   tinyeps	full_liker   invr   	ones_likesuper__init__)selfr   r   r   r   	base_dist
transforms	__class__s          Y/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/distributions/gumbel.pyr   Gumbel.__init__"   s    ,S8$*DHHNN+c6""z%'@'@

A		MWI%**5!eii-8+I N%//$***E)EFNJJ;7	

 	mL    c                    > U R                  [        U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        [
        TU ]  XS9$ )N)	_instance)_get_checked_instancer   r   expandr   r   )r   batch_shaper'   newr"   s       r#   r)   Gumbel.expand5   sP    ((;((//+.JJ%%k2	w~k~99r%   c                     U R                   (       a  U R                  U5        U R                  U-
  U R                  -  nX"R	                  5       -
  U R                  R                  5       -
  $ N)_validate_args_validate_sampler   r   explog)r   valueys      r#   log_probGumbel.log_prob<   sN    !!%(XX+EEGtzz~~///r%   c                 B    U R                   U R                  [        -  -   $ r.   )r   r   r
   r   s    r#   meanGumbel.meanB   s    xx$**~555r%   c                     U R                   $ r.   )r   r8   s    r#   modeGumbel.modeF   s    xxr%   c                 j    [         R                  [         R                  " S5      -  U R                  -  $ )N   )mathpisqrtr   r8   s    r#   stddevGumbel.stddevJ   s"    $))A,&$**44r%   c                 8    U R                   R                  S5      $ )N   )rC   powr8   s    r#   varianceGumbel.varianceN   s    {{q!!r%   c                 J    U R                   R                  5       S[        -   -   $ )Nr   )r   r2   r
   r8   s    r#   entropyGumbel.entropyR   s    zz~~1~#566r%   r.   )__name__
__module____qualname____firstlineno____doc__r   realpositivearg_constraintssupportr   r)   r5   propertyr9   r<   rC   rH   rK   __static_attributes____classcell__)r"   s   @r#   r   r      s     *..9M9MNOGM&:0 6 6   5 5 " "7 7r%   )r@   numbersr   r   torch.distributionsr   ,torch.distributions.transformed_distributionr   torch.distributions.transformsr   r   torch.distributions.uniformr   torch.distributions.utilsr	   r
   __all__r    r%   r#   <module>ra      s5       + P H / C *C7$ C7r%   