Ë
    f^(h÷  ã                   ót   — 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y)
é    N)ÚTensor)Úconstraints)Ú	Dirichlet)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚBetac                   ó0  ‡ — 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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Ú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        €úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributions/beta.pyr   zBeta.__init__'   s™   ø€ Ü�n¤gÔ.´:¸nÌgÔ3VÜ,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    Úreturnc                 ó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   r0   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_shapec                 óX   — | j                   j                  |«      j                  dd«      S )Nr   r   )r   ÚrsampleÚselect)r   r7   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œgÔ&Ü—<‘<  Ó)Ð)àˆMr    c                 ó„   — | j                   j                  d   }t        |t        «      rt	        j
                  |g«      S |S )N).r3   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-   r0   r6   r	   r9   r=   rA   r   r   ÚtuplerJ   rO   Ú__classcell__)r   s   @r   r
   r
      s  ø„ ñð$ &×.Ñ.Ø%×.Ñ.ñ€Oð ×'Ñ'€GØ€KõTõ"ð ðQ�fò Qó ðQð ð,�fò ,ó ð,ð ðX˜&ò Xó ðXñC Eð C°6ó Cò5ò)ð ð ò ó ðð ð ò ó ðð ð:  v¨v ~Ñ!6ò :ó ð:öGr    )r   r   Útorch.distributionsr   Útorch.distributions.dirichletr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r	   Ú__all__r
   rP   r    r   ú<module>rc      s4   ðã Ý Ý +Ý 3Ý <Ý 3ß &ð ˆ(€ô`GÐõ `Gr    