
    ȅi                     l    S SK r S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
Jr  S/r " S S\5      rg)	    N)nanTensor)constraints)Distribution)broadcast_all)_Number_sizeUniformc            	       X  ^  \ rS rSrSrSr\S 5       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$                  " SSS9S 5       r\R*                  " 5       4S\S\4S jjrS rS rS rS rSrU =r$ )r
      a  
Generates uniformly distributed random samples from the half-open interval
``[low, high)``.

Example::

    >>> m = Uniform(torch.tensor([0.0]), torch.tensor([5.0]))
    >>> m.sample()  # uniformly distributed in the range [0.0, 5.0)
    >>> # xdoctest: +SKIP
    tensor([ 2.3418])

Args:
    low (float or Tensor): lower range (inclusive).
    high (float or Tensor): upper range (exclusive).
Tc                     [         R                  " U R                  5      [         R                  " U R                  5      S.$ )N)lowhigh)r   	less_thanr   greater_thanr   selfs    U/home/james-whalen/.local/lib/python3.13/site-packages/torch/distributions/uniform.pyarg_constraintsUniform.arg_constraints!   s2     ((3,,TXX6
 	
    returnc                 :    U R                   U R                  -   S-  $ )N   r   r   r   s    r   meanUniform.mean)   s    		DHH$))r   c                 (    [         U R                  -  $ N)r   r   r   s    r   modeUniform.mode-   s    TYYr   c                 :    U R                   U R                  -
  S-  $ )NgLXz@r   r   s    r   stddevUniform.stddev1   s    		DHH$//r   c                 X    U R                   U R                  -
  R                  S5      S-  $ )Nr      )r   r   powr   s    r   varianceUniform.variance5   s%    		DHH$))!,r11r   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   r2   Uniform.__init__9   s[     ,C6$)c7##
4(A(A**,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   r1   r2   _validate_args)r   r3   	_instancenewr4   s       r   r8   Uniform.expandG   st    (()<jj-((//+.99##K0gs$[$F!00
r   Fr   )is_discrete	event_dimc                 X    [         R                  " U R                  U R                  5      $ r   )r   intervalr   r   r   s    r   supportUniform.supportP   s     ##DHHdii88r   sample_shapec                     U R                  U5      n[        R                  " X R                  R                  U R                  R
                  S9nU R                  X0R                  U R                  -
  -  -   $ )N)dtypedevice)_extended_shaper.   randr   rE   rF   r   )r   rC   shaperH   s       r   rsampleUniform.rsampleU   sQ    $$\2zz%xx~~dhhooNxx$))dhh"6777r   c                    U R                   (       a  U R                  U5        U R                  R                  U5      R	                  U R                  5      nU R
                  R                  U5      R	                  U R                  5      n[        R                  " UR                  U5      5      [        R                  " U R
                  U R                  -
  5      -
  $ r   )
r9   _validate_sampler   letype_asr   gtr.   logmul)r   valuelbubs       r   log_probUniform.log_probZ   s    !!%(XX[[''1YY\\% ((2yy$uyyTXX1E'FFFr   c                     U R                   (       a  U R                  U5        XR                  -
  U R                  U R                  -
  -  nUR	                  SSS9$ )Nr      )minmax)r9   rM   r   r   clampr   rS   results      r   cdfUniform.cdfa   sJ    !!%((("tyy488';<||q|))r   c                 V    XR                   U R                  -
  -  U R                  -   nU$ r   r   r]   s      r   icdfUniform.icdfg   s%    ))dhh./$((:r   c                 \    [         R                  " U R                  U R                  -
  5      $ r   )r.   rQ   r   r   r   s    r   entropyUniform.entropyk   s    yyTXX-..r   r   r   )__name__
__module____qualname____firstlineno____doc__has_rsamplepropertyr   r   r   r    r#   r(   floatboolr2   r8   r   dependent_propertyrA   r.   r/   r	   rJ   rV   r_   rb   re   __static_attributes____classcell__)r4   s   @r   r
   r
      s3     K
 
 *f * * f   0 0 0 2& 2 2 &*	Ce^C unC d{	C
 
C C ##C9 D9 -2JJL 8E 8V 8
G*/ /r   )r.   r   r   torch.distributionsr    torch.distributions.distributionr   torch.distributions.utilsr   torch.typesr   r	   __all__r
    r   r   <module>ry      s0      + 9 3 & +^/l ^/r   