§
    Ÿ²Åj   ã                   ó|   — d dl Z d dlmZmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlmZ dgZ G d„ de¦  «        ZdS )	é    N)ÚNumberÚReal)Úconstraints)ÚExponentialFamily)Ú_standard_normalÚbroadcast_all)Ú_sizeÚNormalc                   óL  ‡ — e Zd ZdZej        ej        dœZej        ZdZ	dZ
ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zdˆ fd
„	Zdˆ fd„	Z ej        ¦   «         fd„Z ej        ¦   «         fdedej        fd„Zd„ Zd„ Zd„ Zd„ Ze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   c                 ó   — | j         S ©N©r   ©Úselfs    úKC:\Projects\Historical\venv\Lib\site-packages\torch/distributions/normal.pyÚmeanzNormal.mean%   ó	   € àŒ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Ðr   c                 ó6   — | j                              d¦  «        S ©Né   )r   Úpowr   s    r   ÚvariancezNormal.variance1   s   € àŒ{�Š˜qÑ!Ô!Ð!r   Nc                 ó6  •— t          ||¦  «        \  | _        | _        t          |t          ¦  «        r)t          |t          ¦  «        rt          j        ¦   «         }n| j                             ¦   «         }t          ¦   «          	                    ||¬¦  «         d S )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__5   s}   ø€ Ý,¨S°%Ñ8Ô8ÑˆŒ�$”*Ý�c�6Ñ"Ô"ð 	*¥z°%½Ñ'@Ô'@ð 	*Ýœ*™,œ,ˆKˆKàœ(Ÿ-š-™/œ/ˆKÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBr   c                 óN  •— |                       t          |¦  «        }t          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=   s†   ø€ Ø×(Ò(­°Ñ;Ô;ˆÝ”j Ñ-Ô-ˆØ”(—/’/ +Ñ.Ô.ˆŒØ”J×%Ò% kÑ2Ô2ˆŒ	Ý�f�cÑÔ×#Ò# K¸uÐ#ÑEÔEÐEØ!Ô0ˆÔØˆ
r   c                 ó  — |                       |¦  «        }t          j        ¦   «         5  t          j        | j                             |¦  «        | j                             |¦  «        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r   )Ú_extended_shaper$   Úno_gradÚnormalr   r-   r   )r   Úsample_shapeÚshapes      r   ÚsamplezNormal.sampleF   sÆ   € Ø×$Ò$ \Ñ2Ô2ˆÝŒ]‰_Œ_ð 	Rð 	RÝ”< ¤§¢°Ñ 6Ô 6¸¼
×8IÒ8IÈ%Ñ8PÔ8PÑQÔQð	Rð 	Rð 	Rð 	Rñ 	Rô 	Rð 	Rð 	Rð 	Rð 	Rð 	Rð 	Røøøð 	Rð 	Rð 	Rð 	Rð 	Rð 	Rs   ©AA;Á;A?ÂA?r5   Úreturnc                 óœ   — |                       |¦  «        }t          || j        j        | j        j        ¬¦  «        }| j        || j        z  z   S )N)ÚdtypeÚdevice)r2   r   r   r:   r;   r   )r   r5   r6   Úepss       r   ÚrsamplezNormal.rsampleK   sE   € Ø×$Ò$ \Ñ2Ô2ˆÝ˜u¨D¬H¬NÀ4Ä8Ä?ÐSÑSÔSˆØŒx˜# ¤
Ñ*Ñ*Ð*r   c                 ó|  — | j         r|                      |¦  «         | j        dz  }t          | j        t          ¦  «        rt          j        | j        ¦  «        n| 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_probP   s®   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(àŒj˜!‰mˆå$.¨t¬z½4Ñ$@Ô$@ÐV�DŒH�T”ZÑ Ô Ð ÀdÄjÇnÂnÑFVÔFVð 	ð �t”xÑ AÑ%Ð&¨!¨c©'Ñ2ØñåŒh•t”y ¥T¤W¡Ñ-Ô-Ñ.Ô.ñ/ð	
r   c                 óÜ   — | j         r|                      |¦  «         ddt          j        || j        z
  | j                             ¦   «         z  t          j        d¦  «        z  ¦  «        z   z  S )Nç      à?é   r   )	r.   r?   r$   Úerfr   r   Ú
reciprocalr@   rB   ©r   rD   s     r   Úcdfz
Normal.cdf^   sh   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ØØ•”	˜5 4¤8Ñ+¨t¬z×/DÒ/DÑ/FÔ/FÑFÍÌÐSTÉÌÑUÑVÔ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.icdfe   s5   € ØŒx˜$œ*¥u¤|°A¸±IÀ±MÑ'BÔ'BÑBÅTÄ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.entropyh   s3   € Ø�S�4œ8 A­¬¡KÑ0Ô0Ñ0Ñ0µ5´9¸T¼ZÑ3HÔ3HÑHÐHr   c                 ó¤   — | j         | j                             d¦  «        z  d| j                             d¦  «                             ¦   «         z  fS )Nr   g      à¿)r   r   r   rL   r   s    r   Ú_natural_paramszNormal._natural_paramsk   sA   € à”˜4œ:Ÿ>š>¨!Ñ,Ô,Ñ,¨d°T´Z·^²^ÀAÑ5FÔ5F×5QÒ5QÑ5SÔ5SÑ.SÐTÐTr   c                 ó„   — d|                      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_normalizero   s8   € Ø�q—u’u˜Q‘x”xÑ !Ñ# c­E¬Iµt´w°hÀ±lÑ,CÔ,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%   r7   r	   ÚTensorr=   rG   rN   rQ   rS   rU   rY   Ú__classcell__)r*   s   @r   r
   r
      sÎ  ø€ € € € € ðð ð  *Ô.¸Ô9MÐNÐN€OØÔ€GØ€KØÐàðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ð"ð "ñ „Xð"ðCð Cð Cð Cð Cð Cðð ð ð ð ð ð #- %¤*¡,¤,ð Rð Rð Rð Rð
 -7¨E¬J©L¬Lð +ð + Eð +¸U¼\ð +ð +ð +ð +ð

ð 
ð 
ð
ð 
ð 
ðRð Rð RðIð Ið Ið ðUð Uñ „XðUðDð Dð Dð Dð Dð Dð Dr   )r@   Únumbersr   r   r$   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   r   Útorch.typesr	   Ú__all__r
   © r   r   ú<module>rn      sÏ   ðà €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à €€€Ø +Ð +Ð +Ð +Ð +Ð +Ø <Ð <Ð <Ð <Ð <Ð <Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ Ð Ð Ð Ð Ð ð ˆ*€ðaDð aDð aDð aDð aDÐñ aDô aDð aDð aDð aDr   