Ë
    P/æj©  ã                   ót   — 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gZ G d	„ de	«      Zy)
é    )ÚNumberÚRealN)Úconstraints)Ú	Dirichlet)ÚExponentialFamily)Úbroadcast_all)Ú_sizeÚBetac                   ó  ‡ — e Zd ZdZej
                  ej
                  dœZej                  ZdZ	dˆ fd„	Z
dˆ fd„	Zed„ «       Zed„ «       Zed„ «       Zdd	ed
ej$                  fd„Zd„ Zd„ Zed„ «       Zed„ «       Ze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Úconcentration0Tc                 óV  •— t        |t        «      r:t        |t        «      r*t        j                  t	        |«      t	        |«      g«      }n't        ||«      \  }}t        j                  ||gd«      }t        ||¬«      | _        t        ‰| �)  | j                  j                  |¬«       y )Néÿÿÿÿ©Úvalidate_args)Ú
isinstancer   ÚtorchÚtensorÚfloatr   Ústackr   Ú
_dirichletÚsuperÚ__init__Ú_batch_shape)Úselfr   r   r   Úconcentration1_concentration0Ú	__class__s        €ú[/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/distributions/beta.pyr   zBeta.__init__'   s™   ø€ Ü�n¤dÔ+´
¸>Ì4Ô0PÜ,1¯L©LÜ�~Ó&¬¨nÓ(=Ð>ó-Ñ)ô .;Ø ó.Ñ*ˆN˜Nô -2¯K©KØ Ð0°"ó-Ð)ô $Ø)¸ô
ˆŒô 	‰Ñ˜Ÿ™×5Ñ5À]ÐÕSó    c                 óê   •— | j                  t        |«      }t        j                  |«      }| 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.expand8   s`   ø€ Ø×(Ñ(¬¨yÓ9ˆÜ—j‘j Ó-ˆØŸ™×/Ñ/°Ó<ˆŒÜŒd�CÑ! +¸UÐ!ÔCØ!×0Ñ0ˆÔØˆ
r    c                 óN   — | j                   | j                   | j                  z   z  S ©Nr   ©r   s    r   Úmeanz	Beta.mean@   s$   € à×"Ñ" d×&9Ñ&9¸D×<OÑ<OÑ&OÑPÐPr    c                 ó4   — | j                   j                  d   S ©N).r   )r   Úmoder+   s    r   r/   z	Beta.modeD   s   € à�‰×#Ñ# FÑ+Ð+r    c                 ó–   — | j                   | j                  z   }| j                   | j                  z  |j                  d«      |dz   z  z  S )Né   é   )r   r   Úpow)r   Útotals     r   ÚvariancezBeta.varianceH   sF   € à×#Ñ# d×&9Ñ&9Ñ9ˆØ×"Ñ" T×%8Ñ%8Ñ8¸E¿I¹IÀa»LÈEÐTUÉIÑ<VÑWÐWr    Úsample_shapeÚreturnc                 óX   — | j                   j                  |«      j                  dd«      S )Nr   r   )r   ÚrsampleÚselect)r   r6   s     r   r9   zBeta.rsampleM   s$   € Ø�‰×&Ñ& |Ó4×;Ñ;¸BÀÓBÐBr    c                 ó¨   — | j                   r| j                  |«       t        j                  |d|z
  gd«      }| j                  j                  |«      S )Ng      ð?r   )r%   Ú_validate_sampler   r   r   Úlog_prob)r   ÚvalueÚheads_tailss      r   r=   zBeta.log_probP   sG   € Ø×ÒØ×!Ñ! %Ô(Ü—k‘k 5¨#°©+Ð"6¸Ó;ˆØ�‰×'Ñ'¨Ó4Ð4r    c                 ó6   — | j                   j                  «       S r*   )r   Úentropyr+   s    r   rA   zBeta.entropyV   s   € Ø�‰×&Ñ&Ó(Ð(r    c                 ó„   — | j                   j                  d   }t        |t        «      rt	        j
                  |g«      S |S r.   ©r   Úconcentrationr   r   r   r   ©r   Úresults     r   r   zBeta.concentration1Y   ó6   € à—‘×.Ñ.¨vÑ6ˆÜ�fœfÔ%Ü—<‘<  Ó)Ð)àˆMr    c                 ó„   — | j                   j                  d   }t        |t        «      rt	        j
                  |g«      S |S )N).r2   rC   rE   s     r   r   zBeta.concentration0a   rG   r    c                 ó2   — | j                   | j                  fS r*   r   r+   s    r   Ú_natural_paramszBeta._natural_paramsi   s   € à×#Ñ# T×%8Ñ%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_normalizerm   s/   € Ü�|‰|˜A‹¤§¡¨a£Ñ0´5·<±<ÀÀAÁÓ3FÑFÐFr    r*   )© )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚunit_intervalÚsupportÚhas_rsampler   r$   Úpropertyr,   r/   r5   r	   r   ÚTensorr9   r=   rA   r   r   rJ   rO   Ú__classcell__)r   s   @r   r
   r
      sæ   ø„ ñð" &×.Ñ.Ø%×.Ñ.ñ€Oð ×'Ñ'€GØ€KõTõ"ð ñQó ðQð ñ,ó ð,ð ñXó ðXñC Eð C°5·<±<ó Cò5ò)ð ñó ðð ñó ðð ñ:ó ð:öGr    )Únumbersr   r   r   Útorch.distributionsr   Útorch.distributions.dirichletr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr	   Ú__all__r
   rP   r    r   ú<module>rd      s4   ðç  ã Ý +Ý 3Ý <Ý 3Ý ð ˆ(€ô_GÐõ _Gr    