ó
    Eñie  ã                   ó‚   • 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        Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/kumaraswamy.pyÚ_momentsr      sN   € ð ˆq‰u‰9€DÜ—’˜TÓ"¤U§\¢\°!£_Ñ4´u·|²|ÀDÁHÓ7MÑM€IØŒu�yŠy˜Ó#Ñ#Ð#ó    c            	       ó  ^ • \ 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 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ô Ü�OŠO˜D×/Ñ/°Ó3Ü�OŠO˜D×/Ñ/°Ó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   r0   ÚKumaraswamy.expandH   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.meanN   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.modeR   s‹   € ð ×Ñ×*Ñ*Ó,°×1DÑ1DÐ0D×/KÑ/KÓ/MÑMØ×#Ñ#Ð# d×&9Ñ&9Ñ9×@Ñ@ÓBñCð 	ô KNˆ×%Ñ%¨Ñ)¨d×.AÑ.AÀAÑ.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.variance\   s9   € ä˜×+Ñ+¨T×-@Ñ-@À!ÓDÄuÇyÂyØ�I‰I�qó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.entropyb   s”   € Ø�×$Ñ$×/Ñ/Ó1Ñ1ˆØ�×$Ñ$×/Ñ/Ó1Ñ1ˆÜ�]Š]˜4×.Ñ.°Ñ2Ó3´nÑDˆàØ‰gñä�iŠi˜×+Ñ+Ó,ñ-ô �iŠi˜×+Ñ+Ó,ñ-ð	
r   )r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚpositiveÚarg_constraintsÚunit_intervalÚsupportÚhas_rsampler   ÚfloatÚboolr'   r0   Úpropertyr7   r<   rA   rI   Ú__static_attributes__Ú__classcell__)r+   s   @r   r   r      sß   ø† ñð$ &×.Ñ.Ø%×.Ñ.ñ€Oð
 ×'Ñ'€GØ€Kð &*ñ	Mà ™ðMð  ™ðMð ˜d‘{ð	Mð
 
÷Mð 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>ra      s9   ðó ß Ý +Ý Pß JÝ /ß Cð ˆ/€ò$ôS
Ð)õ S
r   