
    [Th7                         S SK r S SKrS SKJ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 SKJr  S	/r " S
 S	\5      rg)    N)Tensor)constraints)TransformedDistribution)AffineTransformExpTransform)Uniform)broadcast_alleuler_constant)_Number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\4S j5       r\S\4S	 j5       r\S\4S
 j5       r\S\4S j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          R/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributions/gumbel.pyr   Gumbel.__init__$   s    ,S8$*DHHNN+c7##
5'(B(B

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.expand7   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&   returnc                 B    U R                   U R                  [        -  -   $ r/   )r   r   r
   r    s    r$   meanGumbel.meanD   s    xx$**~555r&   c                     U R                   $ r/   )r   r:   s    r$   modeGumbel.modeH   s    xxr&   c                 j    [         R                  [         R                  " S5      -  U R                  -  $ )N   )mathpisqrtr   r:   s    r$   stddevGumbel.stddevL   s"    $))A,&$**44r&   c                 8    U R                   R                  S5      $ )N   )rE   powr:   s    r$   varianceGumbel.varianceP   s    {{q!!r&   c                 J    U R                   R                  5       S[        -   -   $ )Nr   )r   r3   r
   r:   s    r$   entropyGumbel.entropyT   s    zz~~1~#566r&   r/   )__name__
__module____qualname____firstlineno____doc__r   realpositivearg_constraintssupportr   r*   r6   propertyr   r;   r>   rE   rJ   rM   __static_attributes____classcell__)r#   s   @r$   r   r      s     *..9M9MNOGM&:0 6f 6 6 f   5 5 5 "& " "7 7r&   )rB   r   r   torch.distributionsr   ,torch.distributions.transformed_distributionr   torch.distributions.transformsr   r   torch.distributions.uniformr   torch.distributions.utilsr	   r
   torch.typesr   __all__r    r&   r$   <module>rc      s8       + P H / C  *D7$ D7r&   