
    9i                         S SK r S SKJrJ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)OptionalUnion)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\\\4   S\\\4   S\\   SS4U 4S jjjrSU 4S jjr\R2                  " 5       4S jr\R2                  " 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    Z/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/distributions/normal.pymeanNormal.mean'       xx    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    zz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   r0   Normal.__init__7   s[      -S8$*c7##
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/   r0   _validate_args)r   r1   	_instancenewr2   s       r   r6   Normal.expandD   st    ((;jj-((//+.JJ%%k2	fc#Ku#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   r6   r   )r   sample_shapeshapes      r   sampleNormal.sampleM   sO    $$\2]]_<< 6

8I8I%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   rD   rE   r   )r   r?   r@   epss       r   rsampleNormal.rsampleR   sD    $$\2uHHNN488??Sxx#

***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#   )
r7   _validate_sampler   r+   r
   mathlogr   sqrtpi)r   valuevar	log_scales       r   log_probNormal.log_probW   s    !!%(jj!m $**g.. HHTZZ ! 	 xxA%&!c'2hhtyyTWW-./	
r   c                     U R                   (       a  U R                  U5        SS[        R                  " XR                  -
  U R
                  R                  5       -  [        R                  " S5      -  5      -   -  $ )N      ?   r$   )	r7   rJ   r,   erfr   r   
reciprocalrK   rM   r   rO   s     r   cdf
Normal.cdfg   s^    !!%(		588+tzz/D/D/FFSTUVV
 	
r   c                     U R                   U R                  [        R                  " SU-  S-
  5      -  [        R
                  " S5      -  -   $ )Nr$   rV   )r   r   r,   erfinvrK   rM   rY   s     r   icdfNormal.icdfn   s8    xx$**u||AIM'BBTYYq\QQQr   c                     SS[         R                  " S[         R                  -  5      -  -   [        R                  " U R                  5      -   $ )NrU   r$   )rK   rL   rN   r,   r   r   s    r   entropyNormal.entropyq   s5    S488AK000599TZZ3HHHr   c                     U R                   U R                  R                  S5      -  SU R                  R                  S5      R                  5       -  4$ )Nr$   g      )r   r   r%   rX   r   s    r   _natural_paramsNormal._natural_paramst   s>    4::>>!,,dTZZ^^A5F5Q5Q5S.STTr   c                     SUR                  S5      -  U-  S[        R                  " [        R                  * U-  5      -  -   $ )Ng      пr$   rU   )r%   r,   rL   rK   rN   )r   xys      r   _log_normalizerNormal._log_normalizerx   s7    quuQx!#cEIItwwh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&   r   floatr   boolr0   r6   r,   r-   rA   r   rG   rR   rZ   r^   ra   tuplerd   ri   __static_attributes____classcell__)r2   s   @r   r   r      sn   " *..9M9MNOGKf   f      "& " " )-	C65=!C VU]#C  ~	C
 
C C #(**, R
 -2JJL +E +V +

 
RI Uvv~!6 U UD Dr   )rK   typingr   r   r,   r   torch.distributionsr   torch.distributions.exp_familyr   torch.distributions.utilsr   r	   torch.typesr
   r   __all__r    r   r   <module>r      s7     "   + < E & *iD iDr   