ó
    Eñid  ã                   ót   • S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
JrJr  S/r " S S\5      rg)	é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Ú_standard_normalÚbroadcast_all)Ú_NumberÚ_sizeÚNormalc            	       óº  ^ • \ rS rSrSr\R                  \R                  S.r\R                  r	Sr
Sr\S\4S j5       r\S\4S j5       r\S\4S	 j5       r\S\4S
 j5       r SS\\-  S\\-  S\S-  SS4U 4S jjjrSU 4S jjr\R.                  " 5       4S jr\R.                  " 5       4S\S\4S jjrS rS rS rS r\S\\\4   4S j5       r S r!Sr"U =r#$ )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                 ó   • U R                   $ ©N©r   ©Úselfs    ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/normal.pyÚmeanÚNormal.mean'   ó   € à�x‰xˆó    c                 ó   • U R                   $ r   r   r   s    r   ÚmodeÚNormal.mode+   r   r   c                 ó   • U R                   $ r   )r   r   s    r   ÚstddevÚNormal.stddev/   s   € à�z‰zÐr   c                 ó8   • U R                   R                  S5      $ ©Né   )r   Úpowr   s    r   ÚvarianceÚNormal.variance3   s   € à�{‰{�‰˜qÓ!Ð!r   Nr   r   Úvalidate_argsc                 ó  >• [        X5      u  U l        U l        [        U[        5      (       a+  [        U[        5      (       a  [
        R                  " 5       nOU R                  R                  5       n[        TU ]%  XCS9  g )N©r&   )
r   r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   r&   Úbatch_shapeÚ	__class__s        €r   r.   ÚNormal.__init__7   s[   ø€ ô  -¨SÓ8ÑˆŒ�$”*Ü�cœ7×#Ñ#¬
°5¼'×(BÑ(BÜŸ*š*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜ÐÒBr   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]#  USS9  U R                  Ul	        U$ )NFr(   )
Ú_get_checked_instancer
   r*   r+   r   Úexpandr   r-   r.   Ú_validate_args)r   r/   Ú	_instanceÚnewr0   s       €r   r4   ÚNormal.expandD   st   ø€ Ø×(Ñ(¬°Ó;ˆÜ—j’j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% kÓ2ˆŒ	ÜŒf�cÑ# K¸uÐ#ÑEØ!×0Ñ0ˆÔØˆ
r   c                 ó  • U R                  U5      n[        R                  " 5          [        R                  " U R                  R                  U5      U R                  R                  U5      5      sS S S 5        $ ! , (       d  f       g = fr   )Ú_extended_shaper*   Úno_gradÚnormalr   r4   r   )r   Úsample_shapeÚshapes      r   ÚsampleÚNormal.sampleM   sO   € Ø×$Ñ$ \Ó2ˆÜ�]Š]�_Ü—<’< §¡§¡°Ó 6¸¿
¹
×8IÑ8IÈ%Ó8PÓQ÷ �_�_ús   §A	A:Á:
Br=   c                 ó¾   • U R                  U5      n[        X R                  R                  U R                  R                  S9nU R                  X0R
                  -  -   $ )N)ÚdtypeÚdevice)r:   r   r   rB   rC   r   )r   r=   r>   Úepss       r   ÚrsampleÚNormal.rsampleR   sD   € Ø×$Ñ$ \Ó2ˆÜ˜u¯H©H¯N©NÀ4Ç8Á8Ç?Á?ÑSˆØ�x‰x˜#§
¡
Ñ*Ñ*Ð*r   c                 óÄ  • U R                   (       a  U R                  U5        U R                  S-  n[        U R                  [        5      (       a   [
        R                  " U R                  5      OU R                  R                  5       nXR                  -
  S-  * SU-  -  U-
  [
        R                  " [
        R                  " S[
        R                  -  5      5      -
  $ r!   )
r5   Ú_validate_sampler   r)   r   ÚmathÚlogr   ÚsqrtÚpi)r   ÚvalueÚvarÚ	log_scales       r   Úlog_probÚNormal.log_probW   s¬   € Ø××Ø×!Ñ! %Ô(ð �j‰j˜!‰mˆô ˜$Ÿ*™*¤g×.Ñ.ô �HŠH�T—Z‘ZÔ à—‘—‘Ó!ð 	ð —x‘xÑ AÑ%Ð&¨!¨c©'Ñ2Øñä�hŠh”t—y’y ¤T§W¡W¡Ó-Ó.ñ/ð	
r   c                 óú   • U R                   (       a  U R                  U5        SS[        R                  " XR                  -
  U R
                  R                  5       -  [        R                  " S5      -  5      -   -  $ )Nç      à?é   r"   )	r5   rH   r*   Úerfr   r   Ú
reciprocalrI   rK   ©r   rM   s     r   ÚcdfÚ
Normal.cdfh   s^   € Ø××Ø×!Ñ! %Ô(ØØ”—	’	˜5§8¡8Ñ+¨t¯z©z×/DÑ/DÓ/FÑFÌÏÊÐSTËÑUÓVÑVñ
ð 	
r   c                 óœ   • U R                   U R                  [        R                  " SU-  S-
  5      -  [        R
                  " S5      -  -   $ )Nr"   rT   )r   r   r*   ÚerfinvrI   rK   rW   s     r   ÚicdfÚNormal.icdfo   s8   € Ø�x‰x˜$Ÿ*™*¤u§|¢|°A¸±IÀ±MÓ'BÑBÄTÇYÂYÈqÃ\ÑQÑQÐQr   c                 óž   • SS[         R                  " S[         R                  -  5      -  -   [        R                  " U R                  5      -   $ )NrS   r"   )rI   rJ   rL   r*   r   r   s    r   ÚentropyÚNormal.entropyr   s5   € Ø�Sœ4Ÿ8š8 A¬¯©¡KÓ0Ñ0Ñ0´5·9²9¸T¿Z¹ZÓ3HÑHÐHr   c                 óª   • U R                   U R                  R                  S5      -  SU R                  R                  S5      R                  5       -  4$ )Nr"   g      à¿)r   r   r#   rV   r   s    r   Ú_natural_paramsÚNormal._natural_paramsu   s>   € à—‘˜4Ÿ:™:Ÿ>™>¨!Ó,Ñ,¨d°T·Z±Z·^±^ÀAÓ5F×5QÑ5QÓ5SÑ.SÐTÐTr   c                 óˆ   • SUR                  S5      -  U-  S[        R                  " [        R                  * U-  5      -  -   $ )Ng      Ð¿r"   rS   )r#   r*   rJ   rI   rL   )r   ÚxÚys      r   Ú_log_normalizerÚNormal._log_normalizerz   s7   € Ø�q—u‘u˜Q“xÑ !Ñ# c¬E¯IªI´t·w±w°hÀ±lÓ,CÑ&CÑCÐCr   r   )$Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsampleÚ_mean_carrier_measureÚpropertyr   r   r   r   r$   ÚfloatÚboolr.   r4   r*   r+   r?   r	   rE   rP   rX   r\   r_   Útuplerb   rg   Ú__static_attributes__Ú__classcell__)r0   s   @r   r
   r
      sd  ø† ñð$ *×.Ñ.¸×9MÑ9MÑN€OØ×Ñ€GØ€KØÐàð�fó ó ðð ð�fó ó ðð ð˜ó ó ðð ð"˜&ó "ó ð"ð &*ñ	Cà�e‰^ðCð ˜‰~ðCð ˜d‘{ð	Cð
 
÷Cð C÷ð #(§*¢*£,ô Rð
 -2¯JªJ«Lñ + Eð +¸Võ +ò

ò"
òRòIð ðU  v¨v ~Ñ!6ó Uó ðU÷Dð Dr   )rI   r*   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   r   Útorch.typesr   r	   Ú__all__r
   © r   r   Ú<module>r€      s4   ðã ã Ý Ý +Ý <ß Eß &ð ˆ*€ôlDÐõ lDr   