
    [Th                     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                   P  ^  \ rS rSrSr\R                  \R                  S.r\R                  r	Sr
SU 4S 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concentration0Tc                 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validate_args)
isinstancer   torchtensorfloatr   stackr   
_dirichletsuper__init___batch_shape)selfr   r   r   concentration1_concentration0	__class__s        P/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributions/beta.pyr   Beta.__init__'   s    ng..:ng3V3V,1LL~&n(=>-) .;.*N -2KK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.expand8   s`    ((y9jj-//<dC!+U!C!00
r"   returnc                 N    U R                   U R                   U R                  -   -  $ Nr   r   s    r    mean	Beta.mean@   s$    ""d&9&9D<O<O&OPPr"   c                 4    U R                   R                  S   $ N).r   )r   moder/   s    r    r4   	Beta.modeD   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.varianceH   sF    ##d&9&99""T%8%88EIIaLETUI<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.rsampleM   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_probP   sG    !!%(kk5#+"6;''44r"   c                 6    U R                   R                  5       $ r.   )r   entropyr/   s    r    rI   Beta.entropyV   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.concentration1Y   9    ..v6fg&&<<))Mr"   c                     U R                   R                  S   n[        U[        5      (       a  [        R
                  " U/5      $ U$ )N).r8   rL   rN   s     r    r   Beta.concentration0a   rQ   r"   c                 2    U R                   U R                  4$ r.   r   r/   s    r    _natural_paramsBeta._natural_paramsi   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_normalizerm   s-    ||Aa05<<3FFFr"   )r   r.   ) )__name__
__module____qualname____firstlineno____doc__r   positivearg_constraintsunit_intervalsupporthas_rsampler   r&   propertyr   r0   r4   r;   r	   r?   rD   rI   r   r   tuplerU   r[   __static_attributes____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)       :vv~!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>rr      s4      + 3 < 3 & (`G `Gr"   