ó
    Eñi   ã                   ót   • S SK r S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJr  S/r " S	 S\5      rg)
é    N)ÚTensor)Úconstraints)Ú	Dirichlet)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚ_sizeÚBetac            	       óx  ^ • \ rS rSrSr\R                  \R                  S.r\R                  r	Sr
 SS\\-  S\\-  S\S-  S	S4U 4S
 jjjrSU 4S jjr\S	\4S j5       r\S	\4S j5       r\S	\4S j5       rSS\S	\4S jjrS rS r\S	\4S j5       r\S	\4S j5       r\S	\\\4   4S j5       rS rSrU =r$ )r
   é   aB  
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                 óZ  >• [        U[        5      (       a@  [        U[        5      (       a+  [        R                  " [	        U5      [	        U5      /5      nO%[        X5      u  p[        R                  " X/S5      n[        XCS9U l        [        TU ])  U R                  R                  US9  g )Néÿÿÿÿ©r   )Ú
isinstancer   ÚtorchÚtensorÚfloatr   Ústackr   Ú
_dirichletÚsuperÚ__init__Ú_batch_shape)Úselfr   r   r   Úconcentration1_concentration0Ú	__class__s        €ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/beta.pyr   ÚBeta.__init__)   s™   ø€ ô �n¤g×.Ñ.´:¸nÌg×3VÑ3VÜ,1¯LªLÜ�~Ó&¬¨nÓ(=Ð>ó-Ñ)ô .;Øó.Ñ*ˆNô -2¯KªKØÐ0°"ó-Ð)ô $Ø)ñ
ˆŒô 	‰Ñ˜Ÿ™×5Ñ5À]ÐÒSó    c                 óæ   >• U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        [        [        U]  USS9  U R                  Ul        U$ )NFr   )	Ú_get_checked_instancer
   r   ÚSizer   Úexpandr   r   Ú_validate_args)r   Úbatch_shapeÚ	_instanceÚnewr    s       €r!   r'   ÚBeta.expand?   s`   ø€ Ø×(Ñ(¬¨yÓ9ˆÜ—j’j Ó-ˆØŸ™×/Ñ/°Ó<ˆŒÜŒd�CÑ! +¸UÐ!ÑCØ!×0Ñ0ˆÔØˆ
r#   c                 óN   • U R                   U R                   U R                  -   -  $ ©Nr   ©r   s    r!   ÚmeanÚ	Beta.meanG   s$   € à×"Ñ" d×&9Ñ&9¸D×<OÑ<OÑ&OÑPÐPr#   c                 ó4   • U R                   R                  S   $ ©N).r   )r   Úmoder/   s    r!   r4   Ú	Beta.modeK   s   € à�‰×#Ñ# FÑ+Ð+r#   c                 ó–   • U R                   U R                  -   nU R                   U R                  -  UR                  S5      US-   -  -  $ )Né   é   )r   r   Úpow)r   Útotals     r!   ÚvarianceÚ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   • U R                   R                  U5      R                  SS5      $ )Nr   r   )r   ÚrsampleÚselect)r   r=   s     r!   r?   ÚBeta.rsampleT   s$   € Ø�‰×&Ñ& |Ó4×;Ñ;¸BÀÓBÐBr#   c                 ó´   • U R                   (       a  U R                  U5        [        R                  " USU-
  /S5      nU R                  R                  U5      $ )Ng      ð?r   )r(   Ú_validate_sampler   r   r   Úlog_prob)r   ÚvalueÚheads_tailss      r!   rD   ÚBeta.log_probW   sG   € Ø××Ø×!Ñ! %Ô(Ü—k’k 5¨#°©+Ð"6¸Ó;ˆØ�‰×'Ñ'¨Ó4Ð4r#   c                 ó6   • U R                   R                  5       $ r.   )r   Úentropyr/   s    r!   rI   ÚBeta.entropy]   s   € Ø�‰×&Ñ&Ó(Ð(r#   c                 ó�   • U R                   R                  S   n[        U[        5      (       a  [        R
                  " U/5      $ U$ r3   ©r   Úconcentrationr   r   r   r   ©r   Úresults     r!   r   ÚBeta.concentration1`   ó9   € à—‘×.Ñ.¨vÑ6ˆÜ�fœg×&Ñ&Ü—<’<  Ó)Ð)àˆMr#   c                 ó�   • U R                   R                  S   n[        U[        5      (       a  [        R
                  " U/5      $ U$ )N).r8   rL   rN   s     r!   r   ÚBeta.concentration0h   rQ   r#   c                 ó2   • U R                   U R                  4$ r.   r   r/   s    r!   Ú_natural_paramsÚBeta._natural_paramsp   s   € à×#Ñ# T×%8Ñ%8Ð9Ð9r#   c                 óŽ   • [         R                  " U5      [         R                  " U5      -   [         R                  " X-   5      -
  $ r.   )r   Úlgamma)r   ÚxÚys      r!   Ú_log_normalizerÚBeta._log_normalizeru   s-   € Ü�|Š|˜A‹¤§¢¨a£Ñ0´5·<²<ÀÁÓ3FÑFÐFr#   )r   r.   )© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚpositiveÚarg_constraintsÚunit_intervalÚsupportÚhas_rsampler   r   Úboolr   r'   Úpropertyr0   r4   r;   r	   r?   rD   rI   r   r   ÚtuplerU   r[   Ú__static_attributes__Ú__classcell__)r    s   @r!   r
   r
      s^  ø† ñð& &×.Ñ.Ø%×.Ñ.ñ€Oð ×'Ñ'€GØ€Kð &*ñ	Tà ™ðTð  ™ðTð ˜d‘{ð	Tð
 
÷Tð T÷,ð ðQ�fó Qó ðQð ð,�fó ,ó ð,ð ðX˜&ó Xó ðXñC Eð C°6õ Cò5ò)ð ð ó ó ðð ð ó ó ðð ð:  v¨v ~Ñ!6ó :ó ð:÷Gð Gr#   )r   r   Útorch.distributionsr   Útorch.distributions.dirichletr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r	   Ú__all__r
   r]   r#   r!   Ú<module>rs      s6   ðó Ý Ý +Ý 3Ý <Ý 3ß &ð ˆ(€ôgGÐõ gGr#   