§
    ®˜ºhÇ  ã                   ó¤   — d dl Z d dlmZmZ d dlZ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 dlmZmZ d d	lmZ d
gZ G d„ d
e	¦  «        ZdS )é    N)ÚOptionalÚUnion)ÚTensor)Úconstraints)ÚTransformedDistribution)ÚAffineTransformÚExpTransform)ÚUniform)Úbroadcast_allÚeuler_constant)Ú_NumberÚGumbelc            	       ó  ‡ — e Zd ZdZej        ej        dœZej        Z	 dde	e
ef         de	e
ef         dee         ddfˆ fd„Zdˆ fd	„	Zd
„ Zede
fd„¦   «         Zede
fd„¦   «         Zede
fd„¦   «         Zede
fd„¦   «         Zd„ Zˆ xZS )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                 óÀ  •— t          ||¦  «        \  | _        | _        t          j        | j        j        ¦  «        }t          |t          ¦  «        r5t          |t          ¦  «        r t          |j	        d|j
        z
  |¬¦  «        }nOt          t          j        | j        |j	        ¦  «        t          j        | j        d|j
        z
  ¦  «        |¬¦  «        }t          ¦   «         j        t          dt          j        | j        ¦  «         ¬¦  «        t          ¦   «         j        t          || j         ¬¦  «        g}t!          ¦   «                              |||¬¦  «         d S )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          €úb/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/distributions/gumbel.pyr!   zGumbel.__init__%   s)  ø€ õ  -¨S°%Ñ8Ô8ÑˆŒ�$”*Ý”˜DœHœNÑ+Ô+ˆÝ�c�7Ñ#Ô#ð 	­
°5½'Ñ(BÔ(Bð 	Ý ¤
¨A°´	©MÈÐWÑWÔWˆIˆIåÝ” ¤¨%¬*Ñ5Ô5Ý” ¤¨!¨e¬i©-Ñ8Ô8Ø+ðñ ô ˆIõ ‰NŒNÔÝ ­%¬/¸$¼*Ñ*EÔ*EÐ)EÐFÑFÔFÝ‰NŒNÔÝ ¨D¬J¨;Ð7Ñ7Ô7ð	
ˆ
õ 	‰Œ×Ò˜ J¸mÐÑLÔLÐLÐLÐLó    c                 óü   •— |                       t          |¦  «        }| j                             |¦  «        |_        | j                             |¦  «        |_        t          ¦   «                              ||¬¦  «        S )N)Ú	_instance)Ú_get_checked_instancer   r   Úexpandr   r    )r"   Úbatch_shaper)   Únewr%   s       €r&   r+   zGumbel.expand=   s^   ø€ Ø×(Ò(­°Ñ;Ô;ˆØ”(—/’/ +Ñ.Ô.ˆŒØ”J×%Ò% kÑ2Ô2ˆŒ	Ý‰wŒw�~Š~˜k°Sˆ~Ñ9Ô9Ð9r'   c                 óÀ   — | j         r|                      |¦  «         | j        |z
  | j        z  }||                     ¦   «         z
  | j                             ¦   «         z
  S ©N)Ú_validate_argsÚ_validate_sampler   r   ÚexpÚlog)r"   ÚvalueÚys      r&   Úlog_probzGumbel.log_probD   sW   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ØŒX˜Ñ ¤Ñ+ˆØ�A—E’E‘G”G‘˜tœzŸ~š~Ñ/Ô/Ñ/Ð/r'   c                 ó0   — | j         | j        t          z  z   S r/   )r   r   r   ©r"   s    r&   ÚmeanzGumbel.meanJ   s   € àŒx˜$œ*¥~Ñ5Ñ5Ð5r'   c                 ó   — | j         S r/   )r   r8   s    r&   ÚmodezGumbel.modeN   s	   € àŒxˆr'   c                 óT   — t           j        t          j        d¦  «        z  | j        z  S )Né   )ÚmathÚpiÚsqrtr   r8   s    r&   ÚstddevzGumbel.stddevR   s   € å”�$œ) A™,œ,Ñ&¨$¬*Ñ4Ð4r'   c                 ó6   — | j                              d¦  «        S )Né   )rA   Úpowr8   s    r&   ÚvariancezGumbel.varianceV   s   € àŒ{�Š˜qÑ!Ô!Ð!r'   c                 óJ   — | j                              ¦   «         dt          z   z   S )Nr   )r   r3   r   r8   s    r&   ÚentropyzGumbel.entropyZ   s   € ØŒz�~Š~ÑÔ 1¥~Ñ#5Ñ6Ð6r'   r/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportr   r   Úfloatr   Úboolr!   r+   r6   Úpropertyr9   r;   rA   rE   rG   Ú__classcell__)r%   s   @r&   r   r      s�  ø€ € € € € ðð ð *Ô.¸Ô9MÐNÐN€OØÔ€Gð )-ð	Mð Mà�6˜5�=Ô!ðMð �V˜U�]Ô#ðMð   ”~ð	Mð
 
ðMð Mð Mð Mð Mð Mð0:ð :ð :ð :ð :ð :ð0ð 0ð 0ð ð6�fð 6ð 6ð 6ñ „Xð6ð ð�fð ð ð ñ „Xðð ð5˜ð 5ð 5ð 5ñ „Xð5ð ð"˜&ð "ð "ð "ñ „Xð"ð7ð 7ð 7ð 7ð 7ð 7ð 7r'   )r>   Útypingr   r   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>r]      s  ðà €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø PÐ PÐ PÐ PÐ PÐ PØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ /Ð /Ð /Ð /Ð /Ð /Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ Ð Ð Ð Ð Ð ð ˆ*€ðI7ð I7ð I7ð I7ð I7Ð$ñ I7ô I7ð I7ð I7ð I7r'   