§
    ®˜ºhD  ã                   óš   — d dl mZmZ 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 )é    )ÚOptionalÚUnionN)Ú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 )zE
    Computes nth moment of Kumaraswamy using using torch.lgamma
    é   )ÚtorchÚlgammaÚexp)ÚaÚbÚnÚarg1Ú	log_values        úg/var/www/html/services/rag-service/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ef         de
eef         dee         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   r0   zKumaraswamy.expandG   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.meanM   s   € å˜Ô+¨TÔ-@À!ÑDÔDÐDr   c                 ó  — | j                              ¦   «         | j                               ¦   «         z  | j          | j        z                       ¦   «         z
  }t          || j         dk     | j        dk     z  <   |                     ¦   «         S r4   )r   r&   Úlog1pr   r   r   )r)   Úlog_modes     r   ÚmodezKumaraswamy.modeQ   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   Úpowr6   r5   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 r4   )r   r&   r   r   Údigammar   Úlog)r)   Út1Út0ÚH0s       r   ÚentropyzKumaraswamy.entropya   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   Úfloatr   Úboolr(   r0   Úpropertyr6   r:   r>   rE   Ú__classcell__)r,   s   @r   r   r      sh  ø€ € € € € ðð ð$ &Ô.Ø%Ô.ðð €Oð Ô'€GØ€Kð )-ð	Mð Mà˜f e˜mÔ,ðMð ˜f e˜mÔ,ðMð   ”~ð	Mð
 
ðMð Mð Mð Mð Mð Mð*:ð :ð :ð :ð :ð :ð ðE�fð Eð Eð Eñ „XðEð ð�fð ð ð ñ „Xðð ð
˜&ð 
ð 
ð 
ñ „Xð
ð
	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
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>r[      sû   ðà "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø PÐ PÐ PÐ PÐ PÐ PØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ /Ð /Ð /Ð /Ð /Ð /Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð ˆ/€ð$ð $ð $ðQ
ð Q
ð Q
ð Q
ð Q
Ð)ñ Q
ô Q
ð Q
ð Q
ð Q
r   