Ë
    f^(hÍ  ã                   óx   — 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y)
é    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ˆ 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Údf2Tc                 ó˜  •— t        ||«      \  | _        | _        t        | j                  dz  | j                  «      | _        t        | j                  dz  | j                  «      | _        t        |t        «      r%t        |t        «      rt        j                  «       }n| j                  j                  «       }t        ‰| �1  ||¬«       y )Nç      à?©Úvalidate_args)r   r   r   r   Ú_gamma1Ú_gamma2Ú
isinstancer	   ÚtorchÚSizeÚsizeÚsuperÚ__init__)Úselfr   r   r   Úbatch_shapeÚ	__class__s        €ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributions/fishersnedecor.pyr   zFisherSnedecor.__init__"   s‹   ø€ Ü*¨3°Ó4ÑˆŒ�$”(Ü˜TŸX™X¨™^¨T¯X©XÓ6ˆŒÜ˜TŸX™X¨™^¨T¯X©XÓ6ˆŒä�cœ7Ô#¬
°3¼Ô(@ÜŸ*™*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜°MÐÕBó    c                 óª  •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        | j                  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.expand-   sž   ø€ Ø×(Ñ(¬¸ÓCˆÜ—j‘j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—(‘(—/‘/ +Ó.ˆŒØ—l‘l×)Ñ)¨+Ó6ˆŒØ—l‘l×)Ñ)¨+Ó6ˆŒÜŒn˜cÑ+¨KÀuÐ+ÔMØ!×0Ñ0ˆÔØˆ
r   Úreturnc                 ó~   — | j                   j                  t        j                  ¬«      }t        ||dk  <   ||dz
  z  S )N©Úmemory_formaté   )r   Úcloner   Úcontiguous_formatr   ©r   r   s     r   ÚmeanzFisherSnedecor.mean8   s7   € à�h‰h�n‰n¬5×+BÑ+BˆnÓCˆÜˆˆC�1‰H‰Ø�c˜A‘g‰Ðr   c                 ó¤   — | 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.mode>   sE   € à—‘˜1‘ §¡Ñ(¨4¯8©8Ñ3°t·x±xÀ!±|ÑDˆÜ!ˆˆT�X‰X˜‰]ÑØˆr   c                 ó  — | j                   j                  t        j                  ¬«      }t        ||dk  <   d|j                  d«      z  | j                  |z   dz
  z  | j                  |dz
  j                  d«      z  |dz
  z  z  S )Nr(   é   r*   )r   r+   r   r,   r   Úpowr   r-   s     r   ÚvariancezFisherSnedecor.varianceD   s   € à�h‰h�n‰n¬5×+BÑ+BˆnÓCˆÜˆˆC�1‰H‰àØ�g‰g�a‹jñà�x‰x˜#‰~ Ñ!ñ#ð �x‰x˜3 ™7Ÿ-™-¨Ó*Ñ*¨c°A©gÑ6ñ8ð	
r   © Úsample_shapec                 ót  — | j                  |«      }| j                  j                  |«      j                  |«      }| j                  j                  |«      j                  |«      }t        j                  |j                  «      j                  }|j                  |¬«       ||z  }|j                  |¬«       |S )N)Úmin)
Ú_extended_shaper   ÚrsampleÚviewr   r   ÚfinfoÚdtypeÚtinyÚclamp_)r   r6   ÚshapeÚX1ÚX2r>   ÚYs          r   r:   zFisherSnedecor.rsampleO   s”   € Ø×$Ñ$ \Ó2ˆð �\‰\×!Ñ! ,Ó/×4Ñ4°UÓ;ˆØ�\‰\×!Ñ! ,Ó/×4Ñ4°UÓ;ˆÜ�{‰{˜2Ÿ8™8Ó$×)Ñ)ˆØ
�	‰	�dˆ	ÔØ�‰GˆØ	�‰�TˆÔØˆr   c                 ó¾  — | j                   r| j                  |«       | j                  dz  }| j                  dz  }| j                  | j                  z  }||z   j	                  «       |j	                  «       z
  |j	                  «       z
  }||j                  «       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_prob[   s¼   € Ø×ÒØ×!Ñ! %Ô(Ø�h‰h˜‰nˆØ�h‰h˜‰nˆØ�h‰h˜Ÿ™Ñ!ˆØ�C‰i×ÑÓ! C§J¡J£LÑ0°3·:±:³<Ñ?ˆØ�3—7‘7“9‰_  a¡¬5¯9©9°UÓ+;Ñ;Ñ;ˆØ�C‰iœ5Ÿ;™; s¨U¡{Ó3Ñ3ˆØ�B‰w˜‰|Ðr   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpositiveÚarg_constraintsÚsupportÚhas_rsampler   r"   Úpropertyr   r.   r0   r4   r   r   r
   r:   rQ   Ú__classcell__)r   s   @r   r   r      s³   ø„ ñð *×2Ñ2¸;×;OÑ;OÑP€OØ×"Ñ"€GØ€Kõ	Cõ	ð ð�fò ó ðð
 ð�fò ó ðð
 ð
˜&ò 
ó ð
ð -7¨E¯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   r5   r   r   ú<module>rb      s2   ðã ß Ý +Ý 9Ý +Ý 3ß &ð Ð
€ôV�\õ Vr   