§
    ŠŠtj_  ã                   óŠ   — d dl Z d dl mZ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ÚTensor)Ú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 )z?
    Computes nth moment of Kumaraswamy using torch.lgamma
    é   )ÚtorchÚlgammaÚexp)ÚaÚbÚnÚarg1Ú	log_values        ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/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de
ez  de
ez  dedz  ddfˆ fd	„Zdˆ fd
„	Zede
fd„¦   «         Zede
fd„¦   «         Zede
f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Úconcentration0TNr   r   Úvalidate_argsÚreturnc                 óÊ  •— t          ||¦  «        \  | _        | _        t          t	          j        | j        d¦  «        t	          j        | j        d¦  «        |¬¦  «        }t          | j                             ¦   «         ¬¦  «        t          dd¬¦  «        t          | j                             ¦   «         ¬¦  «        g}t          ¦   «          
                    |||¬¦  «         d S )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&   zKumaraswamy.__init__2   sÜ   ø€ õ 4AØ˜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.expandH   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.meanN   s   € å˜Ô+¨TÔ-@À!ÑDÔDÐDr   c                 ó  — | j                              ¦   «         | j                               ¦   «         z  | j          | j        z                       ¦   «         z
  }t          || j         dk     | j        dk     z  <   |                     ¦   «         S r2   )r   r$   Úlog1pr   r   r   )r'   Úlog_modes     r   ÚmodezKumaraswamy.modeR   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   Úpowr4   r3   s    r   ÚvariancezKumaraswamy.variance\   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 r2   )r   r$   r   r   Údigammar   Úlog)r'   Út1Út0ÚH0s       r   ÚentropyzKumaraswamy.entropyb   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   ÚfloatÚboolr&   r.   Úpropertyr4   r8   r<   rC   Ú__classcell__)r*   s   @r   r   r      s^  ø€ € € € € ðð ð$ &Ô.Ø%Ô.ðð €Oð
 Ô'€GØ€Kð &*ð	Mð Mà ™ðMð  ™ðMð ˜d‘{ð	Mð
 
ðMð Mð Mð Mð Mð Mð,:ð :ð :ð :ð :ð :ð ðE�fð Eð Eð Eñ „XðEð ð�fð ð ð ñ „Xðð ð
˜&ð 
ð 
ð 
ñ „Xð
ð
	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
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>rX      så   ðð €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø PÐ PÐ PÐ PÐ PÐ PØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ /Ð /Ð /Ð /Ð /Ð /Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð ˆ/€ð$ð $ð $ðS
ð S
ð S
ð S
ð S
Ð)ñ S
ô S
ð S
ð S
ð S
r   