§
    ®˜ºhµ  ã                   óš   — d dl mZmZ d dlZd dlmc m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mZmZ dgZ G d	„ de¦  «        ZdS )
é    )ÚOptionalÚUnionN)ÚTensor)Úconstraints)ÚDistribution)ÚGamma)Úbroadcast_allÚlazy_propertyÚlogits_to_probsÚprobs_to_logitsÚNegativeBinomialc                   óÜ  ‡ — e Zd ZdZ ej        d¦  «         ej        dd¦  «        ej        dœZej	        Z
	 	 	 ddeeef         dee         d	ee         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edefd„¦   «         Zedej        fd„¦   «         Zedefd„¦   «         Z ej        ¦   «         fd„Zd„ Z ˆ xZ!S )r   ao  
    Creates a Negative Binomial distribution, i.e. distribution
    of the number of successful independent and identical Bernoulli trials
    before :attr:`total_count` failures are achieved. The probability
    of success of each Bernoulli trial is :attr:`probs`.

    Args:
        total_count (float or Tensor): non-negative number of negative Bernoulli
            trials to stop, although the distribution is still valid for real
            valued count
        probs (Tensor): Event probabilities of success in the half open interval [0, 1)
        logits (Tensor): Event log-odds for probabilities of success
    r   ç        ç      ð?)Útotal_countÚprobsÚlogitsNr   r   r   Úvalidate_argsÚreturnc                 óî  •— |d u |d u k    rt          d¦  «        ‚|�Bt          ||¦  «        \  | _        | _        | j                             | j        ¦  «        | _        nE|€J ‚t          ||¦  «        \  | _        | _        | j                             | j        ¦  «        | _        |�| j        n| j        | _        | j                             ¦   «         }t          ¦   «          	                    ||¬¦  «         d S )Nz;Either `probs` or `logits` must be specified, but not both.©r   )
Ú
ValueErrorr	   r   r   Útype_asr   Ú_paramÚsizeÚsuperÚ__init__)Úselfr   r   r   r   Úbatch_shapeÚ	__class__s         €úm/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/distributions/negative_binomial.pyr   zNegativeBinomial.__init__+   s  ø€ ð �TˆM˜v¨˜~Ò.Ð.ÝØMñô ð ð Ðõ ˜k¨5Ñ1Ô1ñØÔ Ø”
à#Ô/×7Ò7¸¼
ÑCÔCˆDÔÐàÐ%Ð%Ð%õ ˜k¨6Ñ2Ô2ñØÔ Ø”à#Ô/×7Ò7¸¼ÑDÔDˆDÔà$)Ð$5�d”j�j¸4¼;ˆŒØ”k×&Ò&Ñ(Ô(ˆÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBó    c                 óà  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        d| j        v r+| j                             |¦  «        |_        |j        |_        d| j        v r+| j	                             |¦  «        |_	        |j	        |_        t          t          |¦  «                             |d¬¦  «         | j        |_        |S )Nr   r   Fr   )Ú_get_checked_instancer   ÚtorchÚSizer   ÚexpandÚ__dict__r   r   r   r   r   Ú_validate_args)r   r   Ú	_instanceÚnewr    s       €r!   r'   zNegativeBinomial.expandH   sÎ   ø€ Ø×(Ò(Õ)9¸9ÑEÔEˆÝ”j Ñ-Ô-ˆØÔ*×1Ò1°+Ñ>Ô>ˆŒØ�d”mÐ#Ð#Øœ
×)Ò)¨+Ñ6Ô6ˆCŒIØœˆCŒJØ�t”}Ð$Ð$Øœ×+Ò+¨KÑ8Ô8ˆCŒJØœˆCŒJÝÕ Ñ$Ô$×-Ò-¨kÈÐ-ÑOÔOÐOØ!Ô0ˆÔØˆ
r"   c                 ó&   —  | j         j        |i |¤ŽS ©N)r   r+   )r   ÚargsÚkwargss      r!   Ú_newzNegativeBinomial._newV   s   € ØˆtŒ{Œ Ð/¨Ð/Ð/Ð/r"   c                 óD   — | j         t          j        | j        ¦  «        z  S r-   )r   r%   Úexpr   ©r   s    r!   ÚmeanzNegativeBinomial.meanY   s   € àÔ¥%¤)¨D¬KÑ"8Ô"8Ñ8Ð8r"   c                 ó–   — | j         dz
  | j                             ¦   «         z                       ¦   «                              d¬¦  «        S )Né   r   )Úmin)r   r   r2   ÚfloorÚclampr3   s    r!   ÚmodezNegativeBinomial.mode]   s>   € àÔ! AÑ%¨¬¯ªÑ):Ô):Ñ:×AÒAÑCÔC×IÒIÈcÐIÑRÔRÐRr"   c                 óF   — | j         t          j        | j         ¦  «        z  S r-   )r4   r%   Úsigmoidr   r3   s    r!   ÚvariancezNegativeBinomial.variancea   s   € àŒy�5œ=¨$¬+¨Ñ6Ô6Ñ6Ð6r"   c                 ó.   — t          | j        d¬¦  «        S ©NT)Ú	is_binary)r   r   r3   s    r!   r   zNegativeBinomial.logitse   s   € å˜tœz°TÐ:Ñ:Ô:Ð:r"   c                 ó.   — t          | j        d¬¦  «        S r?   )r   r   r3   s    r!   r   zNegativeBinomial.probsi   s   € å˜tœ{°dÐ;Ñ;Ô;Ð;r"   c                 ó4   — | j                              ¦   «         S r-   )r   r   r3   s    r!   Úparam_shapezNegativeBinomial.param_shapem   s   € àŒ{×ÒÑ!Ô!Ð!r"   c                 ó`   — t          | j        t          j        | j         ¦  «        d¬¦  «        S )NF)ÚconcentrationÚrater   )r   r   r%   r2   r   r3   s    r!   Ú_gammazNegativeBinomial._gammaq   s5   € õ ØÔ*Ý”˜DœK˜<Ñ(Ô(Øð
ñ 
ô 
ð 	
r"   c                 óº   — t          j        ¦   «         5  | j                             |¬¦  «        }t          j        |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )N)Úsample_shape)r%   Úno_gradrG   ÚsampleÚpoisson)r   rI   rF   s      r!   rK   zNegativeBinomial.samplez   s—   € ÝŒ]‰_Œ_ð 	'ð 	'Ø”;×%Ò%°<Ð%Ñ@Ô@ˆDÝ”= Ñ&Ô&ð	'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   ”/AÁAÁAc                 ó¤  — | j         r|                      |¦  «         | j        t          j        | j         ¦  «        z  |t          j        | j        ¦  «        z  z   }t          j        | j        |z   ¦  «         t          j        d|z   ¦  «        z   t          j        | j        ¦  «        z   }|                     | j        |z   dk    d¦  «        }||z
  S )Nr   r   )	r)   Ú_validate_sampler   ÚFÚ
logsigmoidr   r%   ÚlgammaÚmasked_fill)r   ÚvalueÚlog_unnormalized_probÚlog_normalizations       r!   Úlog_probzNegativeBinomial.log_prob   sß   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(à $Ô 0µ1´<ØŒ[ˆLñ4
ô 4
ñ !
à•A”L ¤Ñ-Ô-Ñ-ñ!.Ðõ
 Œ\˜$Ô*¨UÑ2Ñ3Ô3Ð3ÝŒl˜3 ™;Ñ'Ô'ñ(åŒl˜4Ô+Ñ,Ô,ñ-ð 	ð .×9Ò9ØÔ˜uÑ$¨Ò+¨Sñ
ô 
Ðð %Ð'8Ñ8Ð8r"   )NNNr-   )"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úgreater_than_eqÚhalf_open_intervalÚrealÚarg_constraintsÚnonnegative_integerÚsupportr   r   Úfloatr   Úboolr   r'   r0   Úpropertyr4   r:   r=   r
   r   r   r%   r&   rC   r   rG   rK   rV   Ú__classcell__)r    s   @r!   r   r      s_  ø€ € € € € ðð ð 3�{Ô2°1Ñ5Ô5Ø/�Ô/°°SÑ9Ô9ØÔ"ðð €Oð
 Ô-€Gð
 #'Ø#'Ø(,ðCð Cà˜6 5˜=Ô)ðCð ˜ÔðCð ˜Ô ð	Cð
   ”~ðCð 
ðCð Cð Cð Cð Cð Cð:ð ð ð ð ð ð0ð 0ð 0ð ð9�fð 9ð 9ð 9ñ „Xð9ð ðS�fð Sð Sð Sñ „XðSð ð7˜&ð 7ð 7ð 7ñ „Xð7ð ð;˜ð ;ð ;ð ;ñ „]ð;ð ð<�vð <ð <ð <ñ „]ð<ð ð"˜UœZð "ð "ð "ñ „Xð"ð ð
˜ð 
ð 
ð 
ñ „]ð
ð #- %¤*¡,¤,ð 'ð 'ð 'ð 'ð
9ð 9ð 9ð 9ð 9ð 9ð 9r"   )Útypingr   r   r%   Útorch.nn.functionalÚnnÚ
functionalrO   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.gammar   Útorch.distributions.utilsr	   r
   r   r   Ú__all__r   © r"   r!   ú<module>ro      s  ðà "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð Ð
€ð~9ð ~9ð ~9ð ~9ð ~9�|ñ ~9ô ~9ð ~9ð ~9ð ~9r"   