§
    ŠŠtj\  ã                   óv   — d dl Z d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 dgZd„ Z G d	„ de¦  «        ZdS )
é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚGammac                 ó*   — t          j        | ¦  «        S ©N)ÚtorchÚ_standard_gamma)Úconcentrations    úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/gamma.pyr   r      s   € ÝÔ  Ñ/Ô/Ð/ó    c            	       óP  ‡ — e Zd ZdZej        ej        dœZej        ZdZ	dZ
edefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Z	 dd
eez  deez  ded	z  dd	fˆ fd„Zdˆ fd„	Z ej        ¦   «         fdedefd„Zd„ Zd„ Zedeeef         fd„¦   «         Zd„ Zd„ Zˆ xZS )r	   aS  
    Creates a Gamma distribution parameterized by shape :attr:`concentration` and :attr:`rate`.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = Gamma(torch.tensor([1.0]), torch.tensor([1.0]))
        >>> m.sample()  # Gamma distributed with concentration=1 and rate=1
        tensor([ 0.1046])

    Args:
        concentration (float or Tensor): shape parameter of the distribution
            (often referred to as alpha)
        rate (float or Tensor): rate parameter of the distribution
            (often referred to as beta), rate = 1 / scale
    ©r   ÚrateTr   Úreturnc                 ó    — | j         | j        z  S r   r   ©Úselfs    r   Úmeanz
Gamma.mean-   s   € àÔ! D¤IÑ-Ð-r   c                 óN   — | j         dz
  | j        z                       d¬¦  «        S )Né   r   ©Úmin)r   r   Úclampr   s    r   Úmodez
Gamma.mode1   s(   € àÔ# aÑ'¨4¬9Ñ4×;Ò;ÀÐ;ÑBÔBÐBr   c                 óF   — | j         | j                             d¦  «        z  S )Né   )r   r   Úpowr   s    r   ÚvariancezGamma.variance5   s   € àÔ! D¤I§M¢M°!Ñ$4Ô$4Ñ4Ð4r   Nr   r   Úvalidate_argsc                 ó6  •— t          ||¦  «        \  | _        | _        t          |t          ¦  «        r)t          |t          ¦  «        rt          j        ¦   «         }n| j                             ¦   «         }t          ¦   «          	                    ||¬¦  «         d S )N©r#   )
r   r   r   Ú
isinstancer   r   ÚSizeÚsizeÚsuperÚ__init__)r   r   r   r#   Úbatch_shapeÚ	__class__s        €r   r*   zGamma.__init__9   s…   ø€ õ )6°mÀTÑ(JÔ(JÑ%ˆÔ˜DœIÝ�m¥WÑ-Ô-ð 	4µ*¸TÅ7Ñ2KÔ2Kð 	4Ýœ*™,œ,ˆKˆKàÔ,×1Ò1Ñ3Ô3ˆKÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBr   c                 óN  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        | j                             |¦  «        |_        t          t          |¦  «                             |d¬¦  «         | j	        |_	        |S )NFr%   )
Ú_get_checked_instancer	   r   r'   r   Úexpandr   r)   r*   Ú_validate_args)r   r+   Ú	_instanceÚnewr,   s       €r   r/   zGamma.expandF   sŠ   ø€ Ø×(Ò(­°	Ñ:Ô:ˆÝ”j Ñ-Ô-ˆØ Ô.×5Ò5°kÑBÔBˆÔØ”9×#Ò# KÑ0Ô0ˆŒÝ�e�SÑÔ×"Ò" ;¸eÐ"ÑDÔDÐDØ!Ô0ˆÔØˆ
r   Úsample_shapec                 ó<  — |                       |¦  «        }t          | j                             |¦  «        ¦  «        | j                             |¦  «        z  }|                     ¦   «                              t          j        |j	        ¦  «        j
        ¬¦  «         |S )Nr   )Ú_extended_shaper   r   r/   r   ÚdetachÚclamp_r   ÚfinfoÚdtypeÚtiny)r   r3   ÚshapeÚvalues       r   ÚrsamplezGamma.rsampleO   s‘   € Ø×$Ò$ \Ñ2Ô2ˆÝ Ô 2× 9Ò 9¸%Ñ @Ô @ÑAÔAÀDÄI×DTÒDTØñE
ô E
ñ 
ˆð 	�Š‰Œ×ÒÝ”˜EœKÑ(Ô(Ô-ð 	ñ 	
ô 	
ð 	
ð ˆr   c                 óT  — t          j        || j        j        | j        j        ¬¦  «        }| j        r|                      |¦  «         t          j        | j        | j        ¦  «        t          j        | j        dz
  |¦  «        z   | j        |z  z
  t          j	        | j        ¦  «        z
  S )N)r9   Údevicer   )
r   Ú	as_tensorr   r9   r?   r0   Ú_validate_sampleÚxlogyr   Úlgamma©r   r<   s     r   Úlog_probzGamma.log_probY   s›   € Ý” ¨T¬Y¬_ÀTÄYÔEUÐVÑVÔVˆØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(åŒK˜Ô*¨D¬IÑ6Ô6ÝŒk˜$Ô,¨qÑ0°%Ñ8Ô8ñ9àŒi˜%Ññ õ Œl˜4Ô-Ñ.Ô.ñ/ð	
r   c                 óÂ   — | j         t          j        | j        ¦  «        z
  t          j        | j         ¦  «        z   d| j         z
  t          j        | j         ¦  «        z  z   S )Ng      ð?)r   r   Úlogr   rC   Údigammar   s    r   ÚentropyzGamma.entropyd   s[   € àÔÝŒi˜œ	Ñ"Ô"ñ#åŒl˜4Ô-Ñ.Ô.ñ/ð �TÔ'Ñ'­5¬=¸Ô9KÑ+LÔ+LÑLñMð	
r   c                 ó&   — | j         dz
  | j         fS ©Nr   r   r   s    r   Ú_natural_paramszGamma._natural_paramsl   s   € àÔ" QÑ&¨¬¨
Ð3Ð3r   c                 óŒ   — t          j        |dz   ¦  «        |dz   t          j        |                     ¦   «          ¦  «        z  z   S rK   )r   rC   rG   Ú
reciprocal)r   ÚxÚys      r   Ú_log_normalizerzGamma._log_normalizerq   s8   € ÝŒ|˜A ™EÑ"Ô" a¨!¡e­u¬y¸!¿,º,¹.¼.¸Ñ/IÔ/IÑ%IÑIÐIr   c                 ó”   — | j         r|                      |¦  «         t          j                             | j        | j        |z  ¦  «        S r   )r0   rA   r   ÚspecialÚgammaincr   r   rD   s     r   Úcdfz	Gamma.cdft   sC   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ÝŒ}×%Ò% dÔ&8¸$¼)ÀeÑ:KÑLÔLÐLr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚnonnegativeÚsupportÚhas_rsampleÚ_mean_carrier_measureÚpropertyr   r   r   r"   ÚfloatÚboolr*   r/   r   r'   r   r=   rE   rI   ÚtuplerL   rQ   rU   Ú__classcell__)r,   s   @r   r	   r	      sý  ø€ € € € € ðð ð& %Ô-ØÔ$ðð €Oð Ô%€GØ€KØÐàð.�fð .ð .ð .ñ „Xð.ð ðC�fð Cð Cð Cñ „XðCð ð5˜&ð 5ð 5ð 5ñ „Xð5ð &*ð	Cð Cà ‘~ðCð �u‰nðCð ˜d‘{ð	Cð
 
ðCð Cð Cð Cð Cð Cðð ð ð ð ð ð -7¨E¬J©L¬Lð ð  Eð ¸Vð ð ð ð ð	
ð 	
ð 	
ð
ð 
ð 
ð ð4  v¨v ~Ô!6ð 4ð 4ð 4ñ „Xð4ðJð Jð JðMð Mð Mð Mð Mð Mð Mr   )r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r   r	   © r   r   ú<module>rk      sÑ   ðð €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ)€ð0ð 0ð 0ðeMð eMð eMð eMð eMÐñ eMô eMð eMð eMð eMr   