
    [Th                         S SK r S SK JrJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJrJr  S/rS	 r " S
 S\5      rg)    N)nanTensor)constraints)TransformedDistribution)AffineTransformPowerTransform)Uniform)broadcast_alleuler_constantKumaraswamyc                     SX -  -   n[         R                  " U5      [         R                  " U5      -   [         R                  " X1-   5      -
  nU[         R                  " U5      -  $ )z=
Computes nth moment of Kumaraswamy using using torch.lgamma
   )torchlgammaexp)abnarg1	log_values        W/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributions/kumaraswamy.py_momentsr      sN     qu9DT"U\\!_4u||DH7MMIuyy###    c                      ^  \ 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 rSrU =r$ )r      a#  
Samples from a Kumaraswamy distribution.

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = Kumaraswamy(torch.tensor([1.0]), torch.tensor([1.0]))
    >>> m.sample()  # sample from a Kumaraswamy distribution with concentration alpha=1 and beta=1
    tensor([ 0.1729])

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  > [        X5      u  U l        U l        [        [        R
                  " U R                  S5      [        R
                  " U R                  S5      US9n[        U R                  R                  5       S9[        SSS9[        U R                  R                  5       S9/n[        TU ])  XEUS9  g )Nr   r   )validate_args)exponentg      ?g      )locscale)r
   r   r   r	   r   	full_liker   
reciprocalr   super__init__)selfr   r   r   	base_dist
transforms	__class__s         r   r&   Kumaraswamy.__init__0   s    3@4
0T0 OOD//3OOD//3'
	 D$7$7$B$B$DE40D$7$7$B$B$DE


 	mLr   c                    > U R                  [        U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        [
        TU ]  XS9$ )N)	_instance)_get_checked_instancer   r   expandr   r%   )r'   batch_shaper-   newr*   s       r   r/   Kumaraswamy.expand@   sX    ((i@!0077D!0077Dw~k~99r   returnc                 D    [        U R                  U R                  S5      $ Nr   )r   r   r   r'   s    r   meanKumaraswamy.meanF   s    ++T-@-@!DDr   c                 *   U R                   R                  5       U R                   * R                  5       -  U R                   * U R                  -  R                  5       -
  n[        XR                   S:  U R                  S:  -  '   UR                  5       $ r5   )r   r$   log1pr   r   r   )r'   log_modes     r   modeKumaraswamy.modeJ   s     **,1D1D0D/K/K/MM###d&9&99@@BC 	 KN%%)d.A.AA.EFG||~r   c                     [        U R                  U R                  S5      [        R                  " U R
                  S5      -
  $ )N   )r   r   r   r   powr7   r6   s    r   varianceKumaraswamy.varianceT   s9    ++T-@-@!DuyyIIqH
 
 	
r   c                 \   SU R                   R                  5       -
  nSU R                  R                  5       -
  n[        R                  " U R                  S-   5      [
        -   nUX-  -   [        R                  " U R                   5      -
  [        R                  " U R                  5      -
  $ r5   )r   r$   r   r   digammar   log)r'   t1t0H0s       r   entropyKumaraswamy.entropyZ   s    $$//11$$//11]]4..23nDgii++,- ii++,-	
r   )r   r   )N)__name__
__module____qualname____firstlineno____doc__r   positivearg_constraintsunit_intervalsupporthas_rsampler&   r/   propertyr   r7   r<   rA   rI   __static_attributes____classcell__)r*   s   @r   r   r      s    $ &..%..O ''GKM : Ef E E f   
& 
 

	
 	
r   )r   r   r   torch.distributionsr   ,torch.distributions.transformed_distributionr   torch.distributions.transformsr   r   torch.distributions.uniformr	   torch.distributions.utilsr
   r   __all__r   r    r   r   <module>r_      s7      + P J / C /$L
) L
r   