ó
    EñiQ  ã                   óx   • 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  S SK	J
r
  S SKJrJr  S/r " S	 S\5      rg)
é    N)ÚnanÚTensor)Úconstraints)ÚDistribution)ÚGamma)Úbroadcast_all)Ú_NumberÚ_sizeÚFisherSnedecorc            	       ó<  ^ • \ 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\R(                  " S5      4S\S	\
4S jjrS rSrU =r$ )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                 ó¤  >• [        X5      u  U l        U l        [        U R                  S-  U R                  5      U l        [        U R                  S-  U R                  5      U l        [        U[        5      (       a+  [        U[        5      (       a  [        R                  " 5       nOU R                  R                  5       n[        TU ]1  XCS9  g )Nç      à?©r   )r   r   r   r   Ú_gamma1Ú_gamma2Ú
isinstancer	   ÚtorchÚSizeÚsizeÚsuperÚ__init__)Úselfr   r   r   Úbatch_shapeÚ	__class__s        €Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/fishersnedecor.pyr   ÚFisherSnedecor.__init__$   s�   ø€ ô +¨3Ó4ÑˆŒ�$”(Ü˜TŸX™X¨™^¨T¯X©XÓ6ˆŒÜ˜TŸX™X¨™^¨T¯X©XÓ6ˆŒä�cœ7×#Ñ#¬
°3¼×(@Ñ(@ÜŸ*š*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜ÐÒBó    c                 ó¦  >• U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        U R                  R                  U5      Ul        U R                  R                  U5      Ul        [        [        U]+  USS9  U R                  Ul        U$ )NFr   )Ú_get_checked_instancer   r   r   r   Úexpandr   r   r   r   r   Ú_validate_args)r   r   Ú	_instanceÚnewr   s       €r    r%   ÚFisherSnedecor.expand4   sž   ø€ Ø×(Ñ(¬¸ÓCˆÜ—j’j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—(‘(—/‘/ +Ó.ˆŒØ—l‘l×)Ñ)¨+Ó6ˆŒØ—l‘l×)Ñ)¨+Ó6ˆŒÜŒn˜cÑ+¨KÀuÐ+ÑMØ!×0Ñ0ˆÔØˆ
r"   c                 ót   • U R                   R                  [        R                  S9n[        XS:*  '   XS-
  -  $ )N©Úmemory_formaté   )r   Úcloner   Úcontiguous_formatr   ©r   r   s     r    ÚmeanÚFisherSnedecor.mean?   s3   € à�h‰h�n‰n¬5×+BÑ+BˆnÐCˆÜˆ�1‰H‰Ø˜A‘g‰Ðr"   c                 ó¢   • U R                   S-
  U R                   -  U R                  -  U R                  S-   -  n[        XR                   S:*  '   U$ )Nr-   )r   r   r   )r   Úmodes     r    r4   ÚFisherSnedecor.modeE   sC   € à—‘˜1‘ §¡Ñ(¨4¯8©8Ñ3°t·x±xÀ!±|ÑDˆÜ!ˆ�X‰X˜‰]ÑØˆr"   c                 ó  • U R                   R                  [        R                  S9n[        XS:*  '   SUR                  S5      -  U R                  U-   S-
  -  U R                  US-
  R                  S5      -  US-
  -  -  $ )Nr+   é   r-   )r   r.   r   r/   r   Úpowr   r0   s     r    ÚvarianceÚFisherSnedecor.varianceK   s}   € à�h‰h�n‰n¬5×+BÑ+BˆnÐCˆÜˆ�1‰H‰àØ�g‰g�a‹jñà�x‰x˜#‰~ Ñ!ñ#ð �x‰x˜3 ™7Ÿ-™-¨Ó*Ñ*¨c°A©gÑ6ñ8ð	
r"   © Úsample_shapec                 óh  • U R                  U5      nU R                  R                  U5      R                  U5      nU R                  R                  U5      R                  U5      n[
        R                  " UR                  5      R                  nUR                  US9  X4-  nUR                  US9  U$ )N)Úmin)
Ú_extended_shaper   ÚrsampleÚviewr   r   ÚfinfoÚdtypeÚtinyÚclamp_)r   r<   ÚshapeÚX1ÚX2rD   ÚYs          r    r@   ÚFisherSnedecor.rsampleV   s’   € Ø×$Ñ$ \Ó2ˆð �\‰\×!Ñ! ,Ó/×4Ñ4°UÓ;ˆØ�\‰\×!Ñ! ,Ó/×4Ñ4°UÓ;ˆÜ�{Š{˜2Ÿ8™8Ó$×)Ñ)ˆØ
�	‰	�dˆ	ÑØ‰GˆØ	�‰�TˆÑØˆr"   c                 óÂ  • U R                   (       a  U R                  U5        U R                  S-  nU R                  S-  nU R                  U R                  -  nX#-   R	                  5       UR	                  5       -
  UR	                  5       -
  nX$R                  5       -  US-
  [        R
                  " U5      -  -   nX#-   [        R                  " XA-  5      -  nXV-   U-
  $ )Nr   é   )r&   Ú_validate_sampler   r   ÚlgammaÚlogr   Úlog1p)r   ÚvalueÚct1Úct2Úct3Út1Út2Út3s           r    Úlog_probÚFisherSnedecor.log_probb   s²   € Ø××Ø×!Ñ! %Ô(Ø�h‰h˜‰nˆØ�h‰h˜‰nˆØ�h‰h˜Ÿ™Ñ!ˆØ‰i×ÑÓ! C§J¡J£LÑ0°3·:±:³<Ñ?ˆØ—7‘7“9‰_  a¡¬5¯9ª9°UÓ+;Ñ;Ñ;ˆØ‰iœ5Ÿ;š; s¡{Ó3Ñ3ˆØ‰w˜‰|Ðr"   )r   r   r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚpositiveÚarg_constraintsÚsupportÚhas_rsampler   ÚfloatÚboolr   r%   Úpropertyr1   r4   r9   r   r   r
   r@   rX   Ú__static_attributes__Ú__classcell__)r   s   @r    r   r      s÷   ø† ñð  *×2Ñ2¸;×;OÑ;OÑP€OØ×"Ñ"€GØ€Kð &*ñ	Cà�e‰^ðCð �e‰^ðCð ˜d‘{ð	Cð
 
÷Cð C÷ 	ð ð�fó ó ðð
 ð�fó ó ðð
 ð
˜&ó 
ó ð
ð -2¯JªJ°r«Nñ 
 Eð 
¸võ 
÷	ð 	r"   )r   r   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.gammar   Útorch.distributions.utilsr   Útorch.typesr	   r
   Ú__all__r   r;   r"   r    Ú<module>rn      s4   ðó ß Ý +Ý 9Ý +Ý 3ß &ð Ð
€ô\�\õ \r"   