Ë
    f^(hŠ  ã                   ót   — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZ dgZ G d„ de«      Zy)	é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Ú_standard_normalÚbroadcast_all)Ú_NumberÚ_sizeÚNormalc                   ór  ‡ — e Zd ZdZej
                  ej                  dœZej
                  ZdZ	dZ
edefd„«       Zedefd„«       Zedefd„«       Zedefd	„«       Zdˆ fd
„	Zdˆ fd„	Z ej(                  «       fd„Z ej(                  «       fdedefd„Zd„ Zd„ Zd„ Zd„ Zedeeef   fd„«       Zd„ Zˆ xZS )r
   a+  
    Creates a normal (also called Gaussian) distribution parameterized by
    :attr:`loc` and :attr:`scale`.

    Example::

        >>> # xdoctest: +IGNORE_WANT("non-deterministic")
        >>> m = Normal(torch.tensor([0.0]), torch.tensor([1.0]))
        >>> m.sample()  # normally distributed with loc=0 and scale=1
        tensor([ 0.1046])

    Args:
        loc (float or Tensor): mean of the distribution (often referred to as mu)
        scale (float or Tensor): standard deviation of the distribution
            (often referred to as sigma)
    )ÚlocÚscaleTr   Úreturnc                 ó   — | j                   S ©N©r   ©Úselfs    úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributions/normal.pyÚmeanzNormal.mean&   ó   € à�x‰xˆó    c                 ó   — | j                   S r   r   r   s    r   ÚmodezNormal.mode*   r   r   c                 ó   — | j                   S r   )r   r   s    r   ÚstddevzNormal.stddev.   s   € à�z‰zÐr   c                 ó8   — | j                   j                  d«      S ©Né   )r   Úpowr   s    r   ÚvariancezNormal.variance2   s   € à�{‰{�‰˜qÓ!Ð!r   c                 óø   •— t        ||«      \  | _        | _        t        |t        «      r%t        |t        «      rt        j                  «       }n| j                  j                  «       }t        ‰| �%  ||¬«       y )N©Úvalidate_args)
r   r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   r#   Úbatch_shapeÚ	__class__s        €r   r)   zNormal.__init__6   sW   ø€ Ü,¨S°%Ó8ÑˆŒ�$”*Ü�cœ7Ô#¬
°5¼'Ô(BÜŸ*™*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜°MÐÕBr   c                 ó*  •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        | j                  j                  |«      |_        t        t        |�#  |d¬«       | j                  |_	        |S )NFr"   )
Ú_get_checked_instancer
   r%   r&   r   Úexpandr   r(   r)   Ú_validate_args)r   r*   Ú	_instanceÚnewr+   s       €r   r.   zNormal.expand>   st   ø€ Ø×(Ñ(¬°Ó;ˆÜ—j‘j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% kÓ2ˆŒ	ÜŒf�cÑ# K¸uÐ#ÔEØ!×0Ñ0ˆÔØˆ
r   c                 ó  — | j                  |«      }t        j                  «       5  t        j                  | j                  j                  |«      | j                  j                  |«      «      cd d d «       S # 1 sw Y   y xY wr   )Ú_extended_shaper%   Úno_gradÚnormalr   r.   r   )r   Úsample_shapeÚshapes      r   ÚsamplezNormal.sampleG   s^   € Ø×$Ñ$ \Ó2ˆÜ�]‰]‹_ñ 	RÜ—<‘< §¡§¡°Ó 6¸¿
¹
×8IÑ8IÈ%Ó8PÓQ÷	R÷ 	Rò 	Rús   ¦AA8Á8Br6   c                 óÈ   — | j                  |«      }t        || j                  j                  | j                  j                  ¬«      }| j                  || j
                  z  z   S )N)ÚdtypeÚdevice)r3   r   r   r:   r;   r   )r   r6   r7   Úepss       r   ÚrsamplezNormal.rsampleL   sH   € Ø×$Ñ$ \Ó2ˆÜ˜u¨D¯H©H¯N©NÀ4Ç8Á8Ç?Á?ÔSˆØ�x‰x˜# §
¡
Ñ*Ñ*Ð*r   c                 ó¬  — | j                   r| j                  |«       | j                  dz  }t        | j                  t        «      rt        j                  | j                  «      n| j                  j                  «       }|| j                  z
  dz   d|z  z  |z
  t        j                  t        j                  dt
        j                  z  «      «      z
  S r   )
r/   Ú_validate_sampler   r$   r   ÚmathÚlogr   ÚsqrtÚpi)r   ÚvalueÚvarÚ	log_scales       r   Úlog_probzNormal.log_probQ   s©   € Ø×ÒØ×!Ñ! %Ô(à�j‰j˜!‰mˆô ˜$Ÿ*™*¤gÔ.ô �H‰H�T—Z‘ZÔ à—‘—‘Ó!ð 	ð �t—x‘xÑ AÑ%Ð&¨!¨c©'Ñ2Øñä�h‰h”t—y‘y ¤T§W¡W¡Ó-Ó.ñ/ð	
r   c                 óî   — | j                   r| j                  |«       ddt        j                  || j                  z
  | j
                  j                  «       z  t        j                  d«      z  «      z   z  S )Nç      à?é   r   )	r/   r?   r%   Úerfr   r   Ú
reciprocalr@   rB   ©r   rD   s     r   Úcdfz
Normal.cdfa   s`   € Ø×ÒØ×!Ñ! %Ô(ØØ”—	‘	˜5 4§8¡8Ñ+¨t¯z©z×/DÑ/DÓ/FÑFÌÏÉÐSTËÑUÓVÑVñ
ð 	
r   c                 ó˜   — | j                   | j                  t        j                  d|z  dz
  «      z  t	        j
                  d«      z  z   S )Nr   rJ   )r   r   r%   Úerfinvr@   rB   rM   s     r   ÚicdfzNormal.icdfh   s8   € Ø�x‰x˜$Ÿ*™*¤u§|¡|°A¸±IÀ±MÓ'BÑBÄTÇYÁYÈqÃ\ÑQÑQÐQr   c                 óš   — ddt        j                  dt         j                  z  «      z  z   t        j                  | j                  «      z   S )NrI   r   )r@   rA   rC   r%   r   r   s    r   ÚentropyzNormal.entropyk   s5   € Ø�Sœ4Ÿ8™8 A¬¯©¡KÓ0Ñ0Ñ0´5·9±9¸T¿Z¹ZÓ3HÑHÐHr   c                 óª   — | j                   | j                  j                  d«      z  d| j                  j                  d«      j                  «       z  fS )Nr   g      à¿)r   r   r   rL   r   s    r   Ú_natural_paramszNormal._natural_paramsn   s>   € à—‘˜4Ÿ:™:Ÿ>™>¨!Ó,Ñ,¨d°T·Z±Z·^±^ÀAÓ5F×5QÑ5QÓ5SÑ.SÐTÐTr   c                 ó†   — d|j                  d«      z  |z  dt        j                  t        j                   |z  «      z  z   S )Ng      Ð¿r   rI   )r   r%   rA   r@   rC   )r   ÚxÚys      r   Ú_log_normalizerzNormal._log_normalizerr   s7   € Ø�q—u‘u˜Q“xÑ !Ñ# c¬E¯I©I´t·w±w°hÀ±lÓ,CÑ&CÑCÐCr   r   ) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsampleÚ_mean_carrier_measureÚpropertyr   r   r   r   r    r)   r.   r%   r&   r8   r	   r=   rG   rN   rQ   rS   ÚtuplerU   rY   Ú__classcell__)r+   s   @r   r
   r
      s!  ø„ ñð" *×.Ñ.¸×9MÑ9MÑN€OØ×Ñ€GØ€KØÐàð�fò ó ðð ð�fò ó ðð ð˜ò ó ðð ð"˜&ò "ó ð"õCõð #- %§*¡*£,ó Rð
 -7¨E¯J©J«Lñ + Eð +¸Vó +ò

ò 
òRòIð ðU  v¨v ~Ñ!6ò Uó ðUöDr   )r@   r%   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   r   Útorch.typesr   r	   Ú__all__r
   © r   r   ú<module>rm      s4   ðã ã Ý Ý +Ý <ß Eß &ð ˆ*€ôdDÐõ dDr   