§
    ŠŠtjQ  ã                   ór   — 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 )	é    N)Ú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    úZ/var/www/html/CA-Chatbot/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z  de
dz  de
dz  d	edz  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        ¦  «        | _        nR|€t          d¦  «        ‚t          ||¦  «        \  | _        | _        | j                             | j        ¦  «        | _        |�| j        n| j        | _        | j                             ¦   «         }t          ¦   «          
                    ||¬¦  «         d S )Nz;Either `probs` or `logits` must be specified, but not both.zlogits is unexpectedly None©r   )Ú
ValueErrorr   r   r   Útype_asÚAssertionErrorr   Ú_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ÔÐàˆ~Ý$Ð%BÑCÔCÐCõ
 ˜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.expandW   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!   r0   )r%   ÚargsÚkwargss      r   Ú_newzBinomial._newe   s   € ØˆtŒ{Œ Ð/¨Ð/Ð/Ð/r   r   )Úis_discreteÚ	event_dimc                 ó6   — t          j        d| j        ¦  «        S )Nr   )r   Úinteger_intervalr   ©r%   s    r   ÚsupportzBinomial.supporth   s   € õ Ô+¨A¨tÔ/?Ñ@Ô@Ð@r   c                 ó    — | j         | j        z  S r2   ©r   r   r:   s    r   ÚmeanzBinomial.meanm   s   € àÔ $¤*Ñ,Ð,r   c                 ó|   — | j         dz   | j        z                       ¦   «                              | j         ¬¦  «        S )Nr   r   )r   r   Úfloorr   r:   s    r   ÚmodezBinomial.modeq   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.varianceu   s   € àÔ $¤*Ñ,°°D´J±Ñ?Ð?r   c                 ó.   — t          | j        d¬¦  «        S ©NT)Ú	is_binary)r	   r   r:   s    r   r   zBinomial.logitsy   s   € å˜tœz°TÐ:Ñ:Ô:Ð:r   c                 ó.   — t          | j        d¬¦  «        S rF   )r   r   r:   s    r   r   zBinomial.probs}   s   € å˜tœ{°dÐ;Ñ;Ô;Ð;r   c                 ó4   — | j                              ¦   «         S r2   )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 r2   )Ú_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 rC   )
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*   rV   Ú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   r`   r*   Úaranger!   re   rf   ÚviewÚlenÚ_batch_shaper,   )r%   r,   r   Úvaluess       r   ra   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   NNNr2   )T)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Únonnegative_integerÚunit_intervalÚrealÚarg_constraintsÚhas_enumerate_supportr   r_   Úboolr$   r,   r5   Údependent_propertyr;   Úpropertyr>   rA   rD   r   r   r   r*   r+   rJ   rQ   r]   rc   ra   Ú__classcell__)r'   s   @r   r
   r
      sw  ø€ € € € € ðð ð2 #Ô6ØÔ*ØÔ"ðð €Oð
 !Ðð %&Ø#Ø $Ø%)ðCð Cà˜c‘\ðCð ˜‰}ðCð ˜‘ð	Cð
 ˜d‘{ð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   )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ð
_ð _ð _ð _ð _ˆ|ñ _ô _ð _ð _ð _r   