Ë
    óÍ:jˆ  ã                   ó„   — 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y)é    )Ú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                 óV  •— t        |t        «      r:t        |t        «      r*t        j                  t	        |«      t	        |«      g«      }n't        ||«      \  }}t        j                  ||gd«      }t        ||¬«      | _        t        ‰| �)  | j                  j                  |¬«       y )Néÿÿÿÿ©r   )Ú
isinstancer
   ÚtorchÚtensorÚfloatr	   Ústackr   Ú
_dirichletÚsuperÚ__init__Ú_batch_shape)Úselfr   r   r   Úconcentration1_concentration0Ú	__class__s        €úm/home/mcse/projects/srt_converter/srt-converter-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.expand?   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.meanG   s$   € à×"Ñ" d×&9Ñ&9¸D×<OÑ<OÑ&OÑPÐPr#   c                 ó4   — | j                   j                  d   S ©N).r   )r   Úmoder.   s    r"   r2   z	Beta.modeK   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.varianceO   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   r9   s     r"   r;   zBeta.rsampleT   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_probW   sG   € Ø×ÒØ×!Ñ! %Ô(Ü—k‘k 5¨#°©+Ð"6¸Ó;ˆØ�‰×'Ñ'¨Ó4Ð4r#   c                 ó6   — | j                   j                  «       S r-   )r   Úentropyr.   s    r"   rC   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`   ó6   € à—‘×.Ñ.¨vÑ6ˆÜ�fœgÔ&Ü—<‘<  Ó)Ð)àˆMr#   c                 ó„   — | j                   j                  d   }t        |t        «      rt	        j
                  |g«      S |S )N).r5   rE   rG   s     r"   r   zBeta.concentration0h   rI   r#   c                 ó2   — | j                   | j                  fS r-   r   r.   s    r"   Ú_natural_paramszBeta._natural_paramsp   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_normalizert   s/   € Ü�|‰|˜A‹¤§¡¨a£Ñ0´5·<±<ÀÀAÁÓ3FÑFÐFr#   r-   )© )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚunit_intervalÚsupportÚhas_rsampler   r   r   r   Úboolr   r'   Úpropertyr/   r2   r8   r   r;   r?   rC   r   r   ÚtuplerL   rQ   Ú__classcell__)r!   s   @r"   r   r      s\  ø„ ñð$ &×.Ñ.Ø%×.Ñ.ñ€Oð ×'Ñ'€GØ€Kð )-ñ	Tà˜f e˜mÑ,ðTð ˜f e˜mÑ,ðTð   ‘~ð	Tð
 
õTõ,ð ðQ�fò Qó ðQð ð,�fò ,ó ð,ð ðX˜&ò Xó ðXñC Eð C°6ó Cò5ò)ð ð ò ó ðð ð ò ó ðð ð:  v¨v ~Ñ!6ò :ó ð:öGr#   )Útypingr   r   r   r   Útorch.distributionsr   Útorch.distributions.dirichletr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr	   Útorch.typesr
   r   Ú__all__r   rR   r#   r"   ú<module>rg      s7   ðç "ã Ý Ý +Ý 3Ý <Ý 3ß &ð ˆ(€ôeGÐõ eGr#   