§
    ®˜º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
 d dlmZ d dlmZmZ d	gZ G d
„ d	e
¦  «        ZdS )é    )ÚOptionalÚUnionN)ÚTensor)Úconstraints)Ú	Dirichlet)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚBetac            	       ó|  ‡ — e Zd ZdZej        ej        dœZej        ZdZ		 dde
eef         de
eef         dee         ddfˆ fd	„Zdˆ fd
„	Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zddedefd„Zd„ Zd„ Zedefd„¦   «         Zedefd„¦   «         Zedeeef         fd„¦   «         Zd„ Zˆ xZS )r   ar  
    Beta distribution parameterized by :attr:`concentration1` and :attr:`concentration0`.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = Beta(torch.tensor([0.5]), torch.tensor([0.5]))
        >>> m.sample()  # Beta distributed with concentration concentration1 and concentration0
        tensor([ 0.1046])

    Args:
        concentration1 (float or Tensor): 1st concentration parameter of the distribution
            (often referred to as alpha)
        concentration0 (float or Tensor): 2nd concentration parameter of the distribution
            (often referred to as beta)
    ©Úconcentration1Úconcentration0TNr   r   Úvalidate_argsÚreturnc                 ó˜  •— t          |t          ¦  «        rFt          |t          ¦  «        r1t          j        t	          |¦  «        t	          |¦  «        g¦  «        }n*t          ||¦  «        \  }}t          j        ||gd¦  «        }t          ||¬¦  «        | _        t          ¦   «          
                    | j        j        |¬¦  «         d S )Néÿÿÿÿ©r   )Ú
isinstancer
   ÚtorchÚtensorÚfloatr	   Ústackr   Ú
_dirichletÚsuperÚ__init__Ú_batch_shape)Úselfr   r   r   Úconcentration1_concentration0Ú	__class__s        €ú`/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/distributions/beta.pyr   zBeta.__init__)   sÕ   ø€ õ �n¥gÑ.Ô.ð 
	µ:¸nÍgÑ3VÔ3Vð 
	Ý,1¬LÝ�~Ñ&Ô&­¨nÑ(=Ô(=Ð>ñ-ô -Ð)Ð)õ .;Ø ñ.ô .Ñ*ˆN˜Nõ -2¬KØ Ð0°"ñ-ô -Ð)õ $Ø)¸ð
ñ 
ô 
ˆŒõ 	‰Œ×Ò˜œÔ5À]ÐÑSÔSÐSÐSÐSó    c                 ó  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        t          t          |¦  «                             |d¬¦  «         | j        |_        |S )NFr   )	Ú_get_checked_instancer   r   ÚSizer   Úexpandr   r   Ú_validate_args)r   Úbatch_shapeÚ	_instanceÚnewr!   s       €r"   r'   zBeta.expand?   sq   ø€ Ø×(Ò(­¨yÑ9Ô9ˆÝ”j Ñ-Ô-ˆØœ×/Ò/°Ñ<Ô<ˆŒÝ�d�CÑÔ×!Ò! +¸UÐ!ÑCÔCÐCØ!Ô0ˆÔØˆ
r#   c                 ó0   — | j         | j         | j        z   z  S ©Nr   ©r   s    r"   Úmeanz	Beta.meanG   s   € àÔ" dÔ&9¸DÔ<OÑ&OÑPÐPr#   c                 ó&   — | j         j        d         S ©N).r   )r   Úmoder.   s    r"   r2   z	Beta.modeK   s   € àŒÔ# FÔ+Ð+r#   c                 óv   — | j         | j        z   }| j         | j        z  |                     d¦  «        |dz   z  z  S )Né   é   )r   r   Úpow)r   Útotals     r"   ÚvariancezBeta.varianceO   s<   € àÔ# dÔ&9Ñ9ˆØÔ" TÔ%8Ñ8¸E¿IºIÀa¹L¼LÈEÐTUÉIÑ<VÑWÐWr#   © Úsample_shapec                 ó^   — | j                              |¦  «                             dd¦  «        S )Nr   r   )r   ÚrsampleÚselect)r   r:   s     r"   r<   zBeta.rsampleT   s(   € ØŒ×&Ò& |Ñ4Ô4×;Ò;¸BÀÑBÔBÐBr#   c                 ó¢   — | j         r|                      |¦  «         t          j        |d|z
  gd¦  «        }| j                             |¦  «        S )Ng      ð?r   )r(   Ú_validate_sampler   r   r   Úlog_prob)r   ÚvalueÚheads_tailss      r"   r@   zBeta.log_probW   sQ   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ý”k 5¨#°©+Ð"6¸Ñ;Ô;ˆØŒ×'Ò'¨Ñ4Ô4Ð4r#   c                 ó4   — | j                              ¦   «         S r-   )r   Úentropyr.   s    r"   rD   zBeta.entropy]   s   € ØŒ×&Ò&Ñ(Ô(Ð(r#   c                 ó~   — | j         j        d         }t          |t          ¦  «        rt	          j        |g¦  «        S |S r1   ©r   Úconcentrationr   r
   r   r   ©r   Úresults     r"   r   zBeta.concentration1`   ó:   € à”Ô.¨vÔ6ˆÝ�f�gÑ&Ô&ð 	Ý”<  Ñ)Ô)Ð)àˆMr#   c                 ó~   — | j         j        d         }t          |t          ¦  «        rt	          j        |g¦  «        S |S )N).r5   rF   rH   s     r"   r   zBeta.concentration0h   rJ   r#   c                 ó   — | j         | j        fS r-   r   r.   s    r"   Ú_natural_paramszBeta._natural_paramsp   s   € àÔ# TÔ%8Ð9Ð9r#   c                 ó„   — t          j        |¦  «        t          j        |¦  «        z   t          j        ||z   ¦  «        z
  S r-   )r   Úlgamma)r   ÚxÚys      r"   Ú_log_normalizerzBeta._log_normalizert   s0   € ÝŒ|˜A‰Œ¥¤¨a¡¤Ñ0µ5´<ÀÀAÁÑ3FÔ3FÑFÐFr#   r-   )r9   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚunit_intervalÚsupportÚhas_rsampler   r   r   r   Úboolr   r'   Úpropertyr/   r2   r8   r   r<   r@   rD   r   r   ÚtuplerM   rR   Ú__classcell__)r!   s   @r"   r   r      s>  ø€ € € € € ðð ð$ &Ô.Ø%Ô.ðð €Oð Ô'€GØ€Kð )-ð	Tð Tà˜f e˜mÔ,ðTð ˜f e˜mÔ,ðTð   ”~ð	Tð
 
ðTð Tð Tð Tð Tð Tð,ð ð ð ð ð ð ðQ�fð Qð Qð Qñ „XðQð ð,�fð ,ð ,ð ,ñ „Xð,ð ðX˜&ð Xð Xð Xñ „XðXðCð C Eð C°6ð Cð Cð Cð Cð5ð 5ð 5ð)ð )ð )ð ð ð ð ð ñ „Xðð ð ð ð ð ñ „Xðð ð:  v¨v ~Ô!6ð :ð :ð :ñ „Xð:ðGð Gð Gð Gð Gð Gð Gr#   )Útypingr   r   r   r   Útorch.distributionsr   Útorch.distributions.dirichletr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr	   Útorch.typesr
   r   Ú__all__r   r9   r#   r"   ú<module>rg      sê   ðà "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ(€ðeGð eGð eGð eGð eGÐñ eGô eGð eGð eGð eGr#   