§
    ®˜ºh®  ã                   ó‚   — 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mZmZ dgZd„ Z G d	„ de¦  «        ZdS )
é    )ÚOptionalÚUnionN)ÚTensor)Úconstraints)ÚDistribution)Úbroadcast_allÚlazy_propertyÚlogits_to_probsÚprobs_to_logitsÚBinomialc                 óh   — |                       d¬¦  «        | z   |                       d¬¦  «        z
  dz  S )Nr   )Úmin©Úmaxé   )Úclamp)Úxs    úd/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/distributions/binomial.pyÚ_clamp_by_zeror      s/   € à�GŠG˜ˆG‰NŒN˜QÑ §¢¨Q ¡¤Ñ/°1Ñ4Ð4ó    c                   óÖ  ‡ — e Zd ZdZej        ej        ej        dœZd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j        dd¬¦  «        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j        ¦   «         fd„Zd„ Zd„ Z dd„Z!ˆ xZ"S )r   añ  
    Creates a Binomial distribution parameterized by :attr:`total_count` and
    either :attr:`probs` or :attr:`logits` (but not both). :attr:`total_count` must be
    broadcastable with :attr:`probs`/:attr:`logits`.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = Binomial(100, torch.tensor([0 , .2, .8, 1]))
        >>> x = m.sample()
        tensor([   0.,   22.,   71.,  100.])

        >>> m = Binomial(torch.tensor([[5.], [10.]]), torch.tensor([0.5, 0.8]))
        >>> x = m.sample()
        tensor([[ 4.,  5.],
                [ 7.,  6.]])

    Args:
        total_count (int or Tensor): number of Bernoulli trials
        probs (Tensor): Event probabilities
        logits (Tensor): Event log-odds
    )Útotal_countÚprobsÚlogitsTé   Nr   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         €r   r%   zBinomial.__init__7   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ÐBr   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Binomial.expandT   sÌ   ø€ Ø×(Ò(­°9Ñ=Ô=ˆÝ”j Ñ-Ô-ˆØÔ*×1Ò1°+Ñ>Ô>ˆŒØ�d”mÐ#Ð#Øœ
×)Ò)¨+Ñ6Ô6ˆCŒIØœˆCŒJØ�t”}Ð$Ð$Øœ×+Ò+¨KÑ8Ô8ˆCŒJØœˆCŒJÝ�h˜ÑÔ×%Ò% kÀÐ%ÑGÔGÐGØ!Ô0ˆÔØˆ
r   c                 ó&   —  | j         j        |i |¤ŽS ©N)r"   r1   )r&   ÚargsÚkwargss      r   Ú_newzBinomial._newb   s   € ØˆtŒ{Œ Ð/¨Ð/Ð/Ð/r   r   )Úis_discreteÚ	event_dimc                 ó6   — t          j        d| j        ¦  «        S )Nr   )r   Úinteger_intervalr   ©r&   s    r   ÚsupportzBinomial.supporte   s   € åÔ+¨A¨tÔ/?Ñ@Ô@Ð@r   c                 ó    — | j         | j        z  S r3   ©r   r   r;   s    r   ÚmeanzBinomial.meani   s   € àÔ $¤*Ñ,Ð,r   c                 ó|   — | j         dz   | j        z                       ¦   «                              | j         ¬¦  «        S )Nr   r   )r   r   Úfloorr   r;   s    r   ÚmodezBinomial.modem   s7   € àÔ! AÑ%¨¬Ñ3×:Ò:Ñ<Ô<×BÒBÀtÔGWÐBÑXÔXÐXr   c                 ó6   — | j         | j        z  d| j        z
  z  S ©Nr   r>   r;   s    r   ÚvariancezBinomial.varianceq   s   € àÔ $¤*Ñ,°°D´J±Ñ?Ð?r   c                 ó.   — t          | j        d¬¦  «        S ©NT)Ú	is_binary)r   r   r;   s    r   r   zBinomial.logitsu   s   € å˜tœz°TÐ:Ñ:Ô:Ð:r   c                 ó.   — t          | j        d¬¦  «        S rG   )r
   r   r;   s    r   r   zBinomial.probsy   s   € å˜tœ{°dÐ;Ñ;Ô;Ð;r   c                 ó4   — | j                              ¦   «         S r3   )r"   r#   r;   s    r   Úparam_shapezBinomial.param_shape}   s   € àŒ{×ÒÑ!Ô!Ð!r   c                 ó  — |                       |¦  «        }t          j        ¦   «         5  t          j        | j                             |¦  «        | j                             |¦  «        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r3   )Ú_extended_shaper+   Úno_gradÚbinomialr   r-   r   )r&   Úsample_shapeÚshapes      r   ÚsamplezBinomial.sample�   sº   € Ø×$Ò$ \Ñ2Ô2ˆÝŒ]‰_Œ_ð 	ð 	Ý”>ØÔ ×'Ò'¨Ñ.Ô.°´
×0AÒ0AÀ%Ñ0HÔ0Hñô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ©AA;Á;A?ÂA?c           	      óÐ  — | j         r|                      |¦  «         t          j        | j        dz   ¦  «        }t          j        |dz   ¦  «        }t          j        | j        |z
  dz   ¦  «        }| j        t          | j        ¦  «        z  | j        t          j        t          j        t          j	        | j        ¦  «         ¦  «        ¦  «        z  z   |z
  }|| j        z  |z
  |z
  |z
  S rD   )
r/   Ú_validate_sampler+   Úlgammar   r   r   Úlog1pÚexpÚabs)r&   ÚvalueÚlog_factorial_nÚlog_factorial_kÚlog_factorial_nmkÚnormalize_terms         r   Úlog_probzBinomial.log_probˆ   sá   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ýœ, tÔ'7¸!Ñ';Ñ<Ô<ˆÝœ, u¨q¡yÑ1Ô1ˆÝ!œL¨Ô)9¸EÑ)AÀAÑ)EÑFÔFÐð Ô�~¨d¬kÑ:Ô:Ñ:ØÔ¥¤­U¬Y½¼	À$Ä+Ñ8NÔ8NÐ7NÑ-OÔ-OÑ!PÔ!PÑPñQàñð 	ð �D”KÑ /Ñ1Ð4EÑEÈÑVð	
r   c                 óL  — t          | j                             ¦   «         ¦  «        }| j                             ¦   «         |k    st	          d¦  «        ‚|                      |                      d¦  «        ¦  «        }t          j        |¦  «        |z   	                    d¦  «         S )Nz5Inhomogeneous total count not supported by `entropy`.Fr   )
Úintr   r   r   ÚNotImplementedErrorr^   Úenumerate_supportr+   rW   Úsum)r&   r   r^   s      r   ÚentropyzBinomial.entropyœ   s”   € Ý˜$Ô*×.Ò.Ñ0Ô0Ñ1Ô1ˆØÔ×#Ò#Ñ%Ô%¨Ò4Ð4Ý%ØGñô ð ð —=’= ×!7Ò!7¸Ñ!>Ô!>Ñ?Ô?ˆÝ”˜8Ñ$Ô$ xÑ/×4Ò4°QÑ7Ô7Ð7Ð7r   c                 óž  — t          | j                             ¦   «         ¦  «        }| j                             ¦   «         |k    st	          d¦  «        ‚t          j        d|z   | j        j        | j        j	        ¬¦  «        }| 
                    ddt          | j        ¦  «        z  z   ¦  «        }|r|                     d| j        z   ¦  «        }|S )Nz?Inhomogeneous total count not supported by `enumerate_support`.r   )ÚdtypeÚdevice)éÿÿÿÿ)r   )r`   r   r   r   ra   r+   Úaranger"   rf   rg   ÚviewÚlenÚ_batch_shaper-   )r&   r-   r   Úvaluess       r   rb   zBinomial.enumerate_support¦   sÈ   € Ý˜$Ô*×.Ò.Ñ0Ô0Ñ1Ô1ˆØÔ×#Ò#Ñ%Ô%¨Ò4Ð4Ý%ØQñô ð õ ”Ø�‰O 4¤;Ô#4¸T¼[Ô=Oð
ñ 
ô 
ˆð —’˜U T­C°Ô0AÑ,BÔ,BÑ%BÑBÑCÔCˆØð 	>Ø—]’] 5¨4Ô+<Ñ#<Ñ=Ô=ˆFØˆr   )r   NNNr3   )T)#Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Únonnegative_integerÚunit_intervalÚrealÚarg_constraintsÚhas_enumerate_supportr   r   r`   r   Úboolr%   r-   r6   Údependent_propertyr<   Úpropertyr?   rB   rE   r	   r   r   r+   r,   rK   rR   r^   rd   rb   Ú__classcell__)r(   s   @r   r   r      s}  ø€ € € € € ðð ð0 #Ô6ØÔ*ØÔ"ðð €Oð
 !Ðð +,Ø"&Ø#'Ø(,ðCð Cà˜6 3˜;Ô'ðCð ˜ÔðCð ˜Ô ð	Cð
   ”~ðCð 
ðCð Cð Cð Cð Cð Cð:ð ð ð ð ð ð0ð 0ð 0ð $€[Ô#°ÀÐBÑBÔBðAð Añ CÔBðAð ð-�fð -ð -ð -ñ „Xð-ð ðY�fð Yð Yð Yñ „XðYð ð@˜&ð @ð @ð @ñ „Xð@ð ð;˜ð ;ð ;ð ;ñ „]ð;ð ð<�vð <ð <ð <ñ „]ð<ð ð"˜UœZð "ð "ð "ñ „Xð"ð #- %¤*¡,¤,ð ð ð ð ð
ð 
ð 
ð(8ð 8ð 8ðð ð ð ð ð ð ð r   )Útypingr   r   r+   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   r	   r
   r   Ú__all__r   r   © r   r   ú<module>r�      sî   ðà "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ˆ,€ð5ð 5ð 5ð
Zð Zð Zð Zð Zˆ|ñ Zô Zð Zð Zð Zr   