
    9iD                         S SK JrJr  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)    )OptionalUnionN)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        _/var/www/html/land-doc-ocr/venv/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S\\\4   S\\\4   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 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concentration0TNr   r   validate_argsreturnc                 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   )r    )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__2   s     4A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_shaper0   newr-   s       r   r2   Kumaraswamy.expandG   sX    ((i@!0077D!0077Dw~k~99r   c                 D    [        U R                  U R                  S5      $ Nr   )r   r   r   r*   s    r   meanKumaraswamy.meanM   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       $ r7   )r   r'   log1pr   r   r   )r*   log_modes     r   modeKumaraswamy.modeQ   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   powr9   r8   s    r   varianceKumaraswamy.variance[   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      -
  $ r7   )r   r'   r   r   digammar   log)r*   t1t0H0s       r   entropyKumaraswamy.entropya   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   floatr   boolr)   r2   propertyr9   r>   rC   rK   __static_attributes____classcell__)r-   s   @r   r   r      s    $ &..%..O ''GK )-	Mfem,M fem,M  ~	M
 
M M*: Ef E E f   
& 
 

	
 	
r   )typingr   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>rd      s:    "   + P J / C /$Q
) Q
r   