§
    ŠŠtj2  ã                   ó|   — 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dS )	é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Ú_standard_normalÚbroadcast_all)Ú_NumberÚ_sizeÚNormalc            	       ó–  ‡ — 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deez  deez  ded
z  dd
fˆ 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/html/CA-Chatbot/venv/lib/python3.11/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.variance3   s   € àŒ{�Š˜qÑ!Ô!Ð!r   Nr   r   Úvalidate_argsc                 ó6  •— t          ||¦  «        \  | _        | _        t          |t          ¦  «        r)t          |t          ¦  «        rt          j        ¦   «         }n| j                             ¦   «         }t          ¦   «          	                    ||¬¦  «         d S )N©r!   )
r   r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   r!   Úbatch_shapeÚ	__class__s        €r   r)   zNormal.__init__7   s   ø€ õ  -¨S°%Ñ8Ô8ÑˆŒ�$”*Ý�c�7Ñ#Ô#ð 	*­
°5½'Ñ(BÔ(Bð 	*Ýœ*™,œ,ˆ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.expandD   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.sampleM   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?r6   c                 óœ   — |                       |¦  «        }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.rsampleR   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_probW   s³   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(àŒj˜!‰mˆõ ˜$œ*¥gÑ.Ô.ð"�DŒH�T”ZÑ Ô Ð à”—’Ñ!Ô!ð 	ð �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.cdfg   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.icdfn   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.entropyq   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_paramst   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_normalizery   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    ÚfloatÚboolr)   r.   r%   r&   r8   r	   r=   rG   rN   rQ   rS   ÚtuplerU   rY   Ú__classcell__)r+   s   @r   r
   r
      sT  ø€ € € € € ðð ð$ *Ô.¸Ô9MÐNÐN€OØÔ€GØ€KØÐàð�fð ð ð ñ „Xðð ð�fð ð ð ñ „Xðð ð˜ð ð ð ñ „Xðð ð"˜&ð "ð "ð "ñ „Xð"ð &*ð	Cð Cà�e‰^ðCð ˜‰~ðCð ˜d‘{ð	Cð
 
ðCð Cð Cð Cð Cð Cðð ð ð ð ð ð #- %¤*¡,¤,ð Rð Rð Rð Rð
 -7¨E¬J©L¬Lð +ð + Eð +¸Vð +ð +ð +ð +ð

ð 
ð 
ð 
ð 
ð 
ðRð Rð RðIð Ið Ið ðU  v¨v ~Ô!6ð Uð Uð Uñ „XðUðDð Dð Dð Dð Dð Dð Dr   )r@   r%   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   r   Útorch.typesr   r	   Ú__all__r
   © r   r   ú<module>ro      sÏ   ðà €€€à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø <Ð <Ð <Ð <Ð <Ð <Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ˆ*€ðkDð kDð kDð kDð kDÐñ kDô kDð kDð kDð kDr   