ó
    Eñiº  ã                   óŒ   • 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S\
\-  S\
\-  S\S-  SS4U 4S	 j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ÚscaleNr   r   Úvalidate_argsÚreturnc                 óÆ  >• [        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é   )r   r   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          €ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/gumbel.pyr    ÚGumbel.__init__%   sù   ø€ ô  -¨SÓ8ÑˆŒ�$”*Ü—’˜DŸH™HŸN™NÓ+ˆÜ�cœ7×#Ñ#¬
°5¼'×(BÑ(BÜ §
¡
¨A°·	±	©MÈÑW‰IäÜ—’ §¡¨%¯*©*Ó5Ü—’ §¡¨!¨e¯i©i©-Ó8Ø+ñˆIô ‹N×ÑÜ ¬%¯/ª/¸$¿*¹*Ó*EÐ)EÑFÜ‹N×ÑÜ ¯J©J¨;Ñ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.expand=   sP   ø€ Ø×(Ñ(¬°Ó;ˆØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% 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_probD   sN   € Ø××Ø×!Ñ! %Ô(Ø�X‰X˜Ñ §¡Ñ+ˆØ—E‘E“G‘˜tŸz™zŸ~™~Ó/Ñ/Ð/r'   c                 óB   • U R                   U R                  [        -  -   $ r0   )r   r   r
   ©r!   s    r%   ÚmeanÚGumbel.meanJ   s   € à�x‰x˜$Ÿ*™*¤~Ñ5Ñ5Ð5r'   c                 ó   • U R                   $ r0   )r   r:   s    r%   ÚmodeÚGumbel.modeN   s   € à�x‰xˆr'   c                 ój   • [         R                  [         R                  " S5      -  U R                  -  $ )Né   )ÚmathÚpiÚsqrtr   r:   s    r%   ÚstddevÚGumbel.stddevR   s"   € ä—‘œ$Ÿ)š) A›,Ñ&¨$¯*©*Ñ4Ð4r'   c                 ó8   • U R                   R                  S5      $ )Né   )rE   Úpowr:   s    r%   ÚvarianceÚGumbel.varianceV   s   € à�{‰{�‰˜qÓ!Ð!r'   c                 óJ   • U R                   R                  5       S[        -   -   $ )Nr   )r   r4   r
   r:   s    r%   ÚentropyÚGumbel.entropyZ   s   € Ø�z‰z�~‰~Ó 1¤~Ñ#5Ñ6Ð6r'   r0   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportr   ÚfloatÚboolr    r+   r7   Úpropertyr;   r>   rE   rJ   rM   Ú__static_attributes__Ú__classcell__)r$   s   @r%   r   r      sò   ø† ñð *×.Ñ.¸×9MÑ9MÑN€Oà×Ñ€Gð &*ñ	Mà�e‰^ðMð ˜‰~ðMð ˜d‘{ð	Mð
 
÷Mð M÷0:ò0ð ð6�fó 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>re      s8   ðã ã Ý Ý +Ý Pß HÝ /ß CÝ ð ˆ*€ôJ7Ð$õ J7r'   