§
    Ÿ²Åjî  ã                   ó†   — d dl Z d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZmZ dgZd	„ Z G d
„ de¦  «        ZdS )é    N)Únan)Úconstraints)ÚTransformedDistribution)ÚAffineTransformÚPowerTransform)ÚUniform)Úbroadcast_allÚeuler_constantÚKumaraswamyc                 óÂ   — d|| z  z   }t          j        |¦  «        t          j        |¦  «        z   t          j        ||z   ¦  «        z
  }|t          j        |¦  «        z  S )zE
    Computes nth moment of Kumaraswamy using using torch.lgamma
    é   )ÚtorchÚlgammaÚexp)ÚaÚbÚnÚarg1Ú	log_values        úPC:\Projects\Historical\venv\Lib\site-packages\torch/distributions/kumaraswamy.pyÚ_momentsr      sU   € ð ˆq�1‰u‰9€DÝ”˜TÑ"Ô"¥U¤\°!¡_¤_Ñ4µu´|ÀDÈ1ÁHÑ7MÔ7MÑM€IØ�uŒy˜Ñ#Ô#Ñ#Ð#ó    c                   ó¨   ‡ — e Zd ZdZej        ej        dœZej        ZdZ	dˆ fd„	Z
dˆ fd„	Zed„ ¦   «         Zed„ ¦   «         Zed	„ ¦   «         Zd
„ Zˆ xZS )r   aS  
    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Úconcentration0TNc                 óÊ  •— t          ||¦  «        \  | _        | _        t          t	          j        | j        d¦  «        t	          j        | j        d¦  «        |¬¦  «        }t          | j                             ¦   «         ¬¦  «        t          dd¬¦  «        t          | j                             ¦   «         ¬¦  «        g}t          ¦   «          
                    |||¬¦  «         d S )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$   zKumaraswamy.__init__/   sÙ   ø€ Ý3@Ø˜Nñ4
ô 4
Ñ0ˆÔ˜TÔ0õ ÝŒO˜DÔ/°Ñ3Ô3ÝŒO˜DÔ/°Ñ3Ô3Ø'ð
ñ 
ô 
ˆ	õ  DÔ$7×$BÒ$BÑ$DÔ$DÐEÑEÔEÝ ¨4Ð0Ñ0Ô0Ý DÔ$7×$BÒ$BÑ$DÔ$DÐEÑEÔEð
ˆ
õ
 	‰Œ×Ò˜ J¸mÐÑLÔLÐLÐLÐLr   c                 óü   •— |                       t          |¦  «        }| j                             |¦  «        |_        | j                             |¦  «        |_        t          ¦   «                              ||¬¦  «        S )N)Ú	_instance)Ú_get_checked_instancer   r   Úexpandr   r#   )r%   Úbatch_shaper*   Únewr(   s       €r   r,   zKumaraswamy.expand?   sd   ø€ Ø×(Ò(­°iÑ@Ô@ˆØ!Ô0×7Ò7¸ÑDÔDˆÔØ!Ô0×7Ò7¸ÑDÔDˆÔÝ‰wŒw�~Š~˜k°Sˆ~Ñ9Ô9Ð9r   c                 ó8   — t          | j        | j        d¦  «        S ©Nr   )r   r   r   ©r%   s    r   ÚmeanzKumaraswamy.meanE   s   € å˜Ô+¨TÔ-@À!ÑDÔDÐDr   c                 ó  — | j                              ¦   «         | j                               ¦   «         z  | j          | j        z                       ¦   «         z
  }t          || j         dk     | j        dk     z  <   |                     ¦   «         S r0   )r   r"   Úlog1pr   r   r   )r%   Úlog_modes     r   ÚmodezKumaraswamy.modeI   s†   € ð Ô×*Ò*Ñ,Ô,°Ô1DÐ0D×/KÒ/KÑ/MÔ/MÑMØÔ#Ð# dÔ&9Ñ9×@Ò@ÑBÔBñCð 	õ KNˆ�$Ô%¨Ò)¨dÔ.AÀAÒ.EÑFÑGØ�|Š|‰~Œ~Ðr   c                 ón   — t          | j        | j        d¦  «        t          j        | j        d¦  «        z
  S )Né   )r   r   r   r   Úpowr2   r1   s    r   ÚvariancezKumaraswamy.varianceS   s8   € å˜Ô+¨TÔ-@À!ÑDÔDÅuÄyØŒI�qñH
ô H
ñ 
ð 	
r   c                 ó2  — d| j                              ¦   «         z
  }d| j                             ¦   «         z
  }t          j        | j        dz   ¦  «        t
          z   }|||z  z   t          j        | j         ¦  «        z
  t          j        | j        ¦  «        z
  S r0   )r   r"   r   r   Údigammar
   Úlog)r%   Út1Út0ÚH0s       r   ÚentropyzKumaraswamy.entropyY   s�   € Ø�Ô$×/Ò/Ñ1Ô1Ñ1ˆØ�Ô$×/Ò/Ñ1Ô1Ñ1ˆÝŒ]˜4Ô.°Ñ2Ñ3Ô3µnÑDˆàØ�2‰gñåŒi˜Ô+Ñ,Ô,ñ-õ Œi˜Ô+Ñ,Ô,ñ-ð	
r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚunit_intervalÚsupportÚhas_rsampler$   r,   Úpropertyr2   r6   r:   rA   Ú__classcell__)r(   s   @r   r   r      s÷   ø€ € € € € ðð ð" &Ô.Ø%Ô.ðð €Oð Ô'€GØ€KðMð Mð Mð Mð Mð Mð :ð :ð :ð :ð :ð :ð ðEð Eñ „XðEð ðð ñ „Xðð ð
ð 
ñ „Xð
ð
	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
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>rT      sÝ   ðà €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø PÐ PÐ PÐ PÐ PÐ PØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ /Ð /Ð /Ð /Ð /Ð /Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð ˆ/€ð$ð $ð $ðK
ð K
ð K
ð K
ð K
Ð)ñ K
ô K
ð K
ð K
ð K
r   