§
    O�’j¼  ã                   ó€   — 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 d dl	m
Z
 d dlmZmZ dgZ G d	„ de¦  «        ZdS )
é    N)ÚnanÚTensor)Úconstraints)ÚDistribution)ÚGamma)Úbroadcast_all)Ú_NumberÚ_sizeÚFisherSnedecorc            	       ó  ‡ — 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 ej        d¦  «        fdede	fd„Zd„ Zˆ xZS )r   aÝ  
    Creates a Fisher-Snedecor distribution parameterized by :attr:`df1` and :attr:`df2`.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = FisherSnedecor(torch.tensor([1.0]), torch.tensor([2.0]))
        >>> m.sample()  # Fisher-Snedecor-distributed with df1=1 and df2=2
        tensor([ 0.2453])

    Args:
        df1 (float or Tensor): degrees of freedom parameter 1
        df2 (float or Tensor): degrees of freedom parameter 2
    )Údf1Údf2TNr   r   Úvalidate_argsÚreturnc                 ó¾  •— t          ||¦  «        \  | _        | _        t          | j        dz  | j        ¦  «        | _        t          | j        dz  | j        ¦  «        | _        t          |t          ¦  «        r)t          |t          ¦  «        rt          j	        ¦   «         }n| j         
                    ¦   «         }t          ¦   «                              ||¬¦  «         d S )Nç      à?©r   )r   r   r   r   Ú_gamma1Ú_gamma2Ú
isinstancer	   ÚtorchÚSizeÚsizeÚsuperÚ__init__)Úselfr   r   r   Úbatch_shapeÚ	__class__s        €úPC:\Projects\DSCons\.venv\Lib\site-packages\torch\distributions\fishersnedecor.pyr   zFisherSnedecor.__init__$   s±   ø€ õ +¨3°Ñ4Ô4ÑˆŒ�$”(Ý˜TœX¨™^¨T¬XÑ6Ô6ˆŒÝ˜TœX¨™^¨T¬XÑ6Ô6ˆŒå�c�7Ñ#Ô#ð 	*­
°3½Ñ(@Ô(@ð 	*Ýœ*™,œ,ˆKˆKàœ(Ÿ-š-™/œ/ˆKÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBó    c                 óÊ  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        | j                             |¦  «        |_        | j                             |¦  «        |_        | j                             |¦  «        |_        t          t          |¦  «         
                    |d¬¦  «         | j        |_        |S )NFr   )Ú_get_checked_instancer   r   r   r   Úexpandr   r   r   r   r   Ú_validate_args)r   r   Ú	_instanceÚnewr   s       €r   r#   zFisherSnedecor.expand4   s²   ø€ Ø×(Ò(­¸ÑCÔCˆÝ”j Ñ-Ô-ˆØ”(—/’/ +Ñ.Ô.ˆŒØ”(—/’/ +Ñ.Ô.ˆŒØ”l×)Ò)¨+Ñ6Ô6ˆŒØ”l×)Ò)¨+Ñ6Ô6ˆŒÝ�n˜cÑ"Ô"×+Ò+¨KÀuÐ+ÑMÔMÐMØ!Ô0ˆÔØˆ
r    c                 óx   — | j                              t          j        ¬¦  «        }t          ||dk    <   ||dz
  z  S )N©Úmemory_formaté   )r   Úcloner   Úcontiguous_formatr   ©r   r   s     r   ÚmeanzFisherSnedecor.mean?   s5   € àŒh�nŠn­5Ô+BˆnÑCÔCˆÝˆˆC�1ŠH‰Ø�c˜A‘g‰Ðr    c                 óv   — | j         dz
  | j         z  | j        z  | j        dz   z  }t          || j         dk    <   |S )Nr*   )r   r   r   )r   Úmodes     r   r0   zFisherSnedecor.modeE   s;   € à”˜1‘ ¤Ñ(¨4¬8Ñ3°t´xÀ!±|ÑDˆÝ!ˆˆTŒX˜Š]ÑØˆr    c                 ó  — | j                              t          j        ¬¦  «        }t          ||dk    <   d|                     d¦  «        z  | j        |z   dz
  z  | j        |dz
                       d¦  «        z  |dz
  z  z  S )Nr(   é   r*   )r   r+   r   r,   r   Úpowr   r-   s     r   ÚvariancezFisherSnedecor.varianceK   s~   € àŒh�nŠn­5Ô+BˆnÑCÔCˆÝˆˆC�1ŠH‰àØ�gŠg�a‰jŒjñàŒx˜#‰~ Ñ!ñ#ð Œx˜3 ™7Ÿ-š-¨Ñ*Ô*Ñ*¨c°A©gÑ6ñ8ð	
r    © Úsample_shapec                 ó‚  — |                       |¦  «        }| j                             |¦  «                             |¦  «        }| j                             |¦  «                             |¦  «        }t          j        |j        ¦  «        j        }| 	                    |¬¦  «         ||z  }| 	                    |¬¦  «         |S )N)Úmin)
Ú_extended_shaper   ÚrsampleÚviewr   r   ÚfinfoÚdtypeÚtinyÚclamp_)r   r6   ÚshapeÚX1ÚX2r>   ÚYs          r   r:   zFisherSnedecor.rsampleV   s§   € Ø×$Ò$ \Ñ2Ô2ˆð Œ\×!Ò! ,Ñ/Ô/×4Ò4°UÑ;Ô;ˆØŒ\×!Ò! ,Ñ/Ô/×4Ò4°UÑ;Ô;ˆÝŒ{˜2œ8Ñ$Ô$Ô)ˆØ
�	Š	�dˆ	ÑÔÐØ�‰GˆØ	�Š�TˆÑÔÐØˆr    c                 ó°  — | j         r|                      |¦  «         | j        dz  }| j        dz  }| j        | j        z  }||z                        ¦   «         |                     ¦   «         z
  |                     ¦   «         z
  }||                     ¦   «         z  |dz
  t          j        |¦  «        z  z   }||z   t          j        ||z  ¦  «        z  }||z   |z
  S )Nr   é   )r$   Ú_validate_sampler   r   ÚlgammaÚlogr   Úlog1p)r   ÚvalueÚct1Úct2Úct3Út1Út2Út3s           r   Úlog_probzFisherSnedecor.log_probb   sÇ   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ØŒh˜‰nˆØŒh˜‰nˆØŒh˜œÑ!ˆØ�C‰i×ÒÑ!Ô! C§J¢J¡L¤LÑ0°3·:²:±<´<Ñ?ˆØ�3—7’7‘9”9‰_  a¡­5¬9°UÑ+;Ô+;Ñ;Ñ;ˆØ�C‰i�5œ; s¨U¡{Ñ3Ô3Ñ3ˆØ�B‰w˜‰|Ðr    )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚsupportÚhas_rsampler   ÚfloatÚboolr   r#   Úpropertyr.   r0   r4   r   r   r
   r:   rQ   Ú__classcell__)r   s   @r   r   r      sˆ  ø€ € € € € ðð ð  *Ô2¸;Ô;OÐPÐP€OØÔ"€GØ€Kð &*ð	Cð Cà�e‰^ðCð �e‰^ðCð ˜d‘{ð	Cð
 
ðCð Cð Cð Cð Cð Cð 	ð 	ð 	ð 	ð 	ð 	ð ð�fð ð ð ñ „Xðð
 ð�fð ð ð ñ „Xðð
 ð
˜&ð 
ð 
ð 
ñ „Xð
ð -7¨E¬J°r©N¬Nð 
ð 
 Eð 
¸vð 
ð 
ð 
ð 
ð	ð 	ð 	ð 	ð 	ð 	ð 	r    )r   r   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.gammar   Útorch.distributions.utilsr   Útorch.typesr	   r
   Ú__all__r   r5   r    r   ú<module>rd      sÐ   ðð €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð Ð
€ð\ð \ð \ð \ð \�\ñ \ô \ð \ð \ð \r    