ó
    Eñi\  ã                   ón   • S SK r S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
  S/rS r " S	 S\5      rg)
é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚGammac                 ó.   • [         R                  " U 5      $ ©N)ÚtorchÚ_standard_gamma)Úconcentrations    ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/gamma.pyr   r      s   € Ü× Ò  Ó/Ð/ó    c            	       ór  ^ • \ rS rSrSr\R                  \R                  S.r\R                  r	Sr
Sr\S\4S j5       r\S\4S j5       r\S\4S	 j5       r SS\\-  S\\-  S\S
-  SS
4U 4S jjjrSU 4S jjr\R,                  " 5       4S\S\4S jjrS rS r\S\\\4   4S j5       rS rS rSrU =r $ )r	   é   a#  
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                 ó4   • U R                   U R                  -  $ r   r   ©Úselfs    r   ÚmeanÚ
Gamma.mean-   s   € à×!Ñ! D§I¡IÑ-Ð-r   c                 óT   • U R                   S-
  U R                  -  R                  SS9$ )Né   r   ©Úmin)r   r   Úclampr   s    r   ÚmodeÚ
Gamma.mode1   s*   € à×#Ñ# aÑ'¨4¯9©9Ñ4×;Ñ;ÀÐ;ÐBÐBr   c                 óR   • U R                   U R                  R                  S5      -  $ )Né   )r   r   Úpowr   s    r   ÚvarianceÚGamma.variance5   s    € à×!Ñ! D§I¡I§M¡M°!Ó$4Ñ4Ð4r   Nr   r   Úvalidate_argsc                 ó  >• [        X5      u  U l        U l        [        U[        5      (       a+  [        U[        5      (       a  [
        R                  " 5       nOU R                  R                  5       n[        TU ]%  XCS9  g )N©r'   )
r   r   r   Ú
isinstancer   r   ÚSizeÚsizeÚsuperÚ__init__)r   r   r   r'   Úbatch_shapeÚ	__class__s        €r   r.   ÚGamma.__init__9   sa   ø€ ô )6°mÓ(JÑ%ˆÔ˜DœIÜ�m¤W×-Ñ-´*¸TÄ7×2KÑ2KÜŸ*š*›,‰Kà×,Ñ,×1Ñ1Ó3ˆKÜ‰Ñ˜ÐÒBr   c                 ó&  >• U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        [        [        U]#  USS9  U R                  Ul	        U$ )NFr)   )
Ú_get_checked_instancer	   r   r+   r   Úexpandr   r-   r.   Ú_validate_args)r   r/   Ú	_instanceÚnewr0   s       €r   r4   ÚGamma.expandF   sy   ø€ Ø×(Ñ(¬°	Ó:ˆÜ—j’j Ó-ˆØ ×.Ñ.×5Ñ5°kÓBˆÔØ—9‘9×#Ñ# KÓ0ˆŒÜŒe�SÑ" ;¸eÐ"ÑDØ!×0Ñ0ˆÔØˆ
r   Úsample_shapec                 ó2  • U R                  U5      n[        U R                  R                  U5      5      U R                  R                  U5      -  nUR                  5       R                  [        R                  " UR                  5      R                  S9  U$ )Nr   )Ú_extended_shaper   r   r4   r   ÚdetachÚclamp_r   ÚfinfoÚdtypeÚtiny)r   r9   ÚshapeÚvalues       r   ÚrsampleÚGamma.rsampleO   s   € Ø×$Ñ$ \Ó2ˆÜ × 2Ñ 2× 9Ñ 9¸%Ó @ÓAÀDÇIÁI×DTÑDTØóE
ñ 
ˆð 	�‰‹×ÑÜ—’˜EŸK™KÓ(×-Ñ-ð 	ñ 	
ð ˆr   c                 óÂ  • [         R                  " XR                  R                  U R                  R                  S9nU R
                  (       a  U R                  U5        [         R                  " U R                  U R                  5      [         R                  " U R                  S-
  U5      -   U R                  U-  -
  [         R                  " U R                  5      -
  $ )N)r?   Údevicer   )
r   Ú	as_tensorr   r?   rF   r5   Ú_validate_sampleÚxlogyr   Úlgamma©r   rB   s     r   Úlog_probÚGamma.log_probY   s    € Ü—’ ¯Y©Y¯_©_ÀTÇYÁY×EUÑEUÑVˆØ××Ø×!Ñ! %Ô(ä�KŠK˜×*Ñ*¨D¯I©IÓ6Ü�kŠk˜$×,Ñ,¨qÑ0°%Ó8ñ9à�i‰i˜%Ññ ô �lŠl˜4×-Ñ-Ó.ñ/ð	
r   c                 ó   • U R                   [        R                  " U R                  5      -
  [        R                  " U R                   5      -   SU R                   -
  [        R
                  " U R                   5      -  -   $ )Ng      ð?)r   r   Úlogr   rJ   Údigammar   s    r   ÚentropyÚGamma.entropyd   sf   € à×ÑÜ�iŠi˜Ÿ	™	Ó"ñ#ä�lŠl˜4×-Ñ-Ó.ñ/ð �T×'Ñ'Ñ'¬5¯=ª=¸×9KÑ9KÓ+LÑLñMð	
r   c                 ó:   • U R                   S-
  U R                  * 4$ ©Nr   r   r   s    r   Ú_natural_paramsÚGamma._natural_paramsl   s   € à×"Ñ" QÑ&¨¯©¨
Ð3Ð3r   c                 óŒ   • [         R                  " US-   5      US-   [         R                  " UR                  5       * 5      -  -   $ rT   )r   rJ   rO   Ú
reciprocal)r   ÚxÚys      r   Ú_log_normalizerÚGamma._log_normalizerq   s4   € Ü�|Š|˜A ™EÓ" a¨!¡e¬u¯yªy¸!¿,¹,».¸Ó/IÑ%IÑIÐIr   c                 ó´   • U R                   (       a  U R                  U5        [        R                  R	                  U R
                  U R                  U-  5      $ r   )r5   rH   r   ÚspecialÚgammaincr   r   rK   s     r   ÚcdfÚ	Gamma.cdft   s?   € Ø××Ø×!Ñ! %Ô(Ü�}‰}×%Ñ% d×&8Ñ&8¸$¿)¹)ÀeÑ:KÓLÐLr   r   )!Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚpositiveÚarg_constraintsÚnonnegativeÚsupportÚhas_rsampleÚ_mean_carrier_measureÚpropertyr   r   r    r%   ÚfloatÚboolr.   r4   r   r+   r   rC   rL   rQ   ÚtuplerU   r[   r`   Ú__static_attributes__Ú__classcell__)r0   s   @r   r	   r	      s7  ø† ñð& %×-Ñ-Ø×$Ñ$ñ€Oð ×%Ñ%€GØ€KØÐàð.�fó .ó ð.ð ðC�fó Có ðCð ð5˜&ó 5ó ð5ð &*ñ	Cà ‘~ðCð �u‰nðCð ˜d‘{ð	Cð
 
÷Cð C÷ð -2¯JªJ«Lñ  Eð ¸Võ ò	
ò
ð ð4  v¨v ~Ñ!6ó 4ó ð4òJ÷Mð Mr   )r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r   r	   © r   r   Ú<module>ry      s8   ðó Ý Ý +Ý <Ý 3ß &ð ˆ)€ò0ôeMÐõ eMr   