
    [Th                     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                   f  ^  \ rS rSrSr\R                  " SSS9\R                  " SSS9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U 4S 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).
Fr   )is_discrete	event_dim)lowhighTreturnc                 :    U R                   U R                  -   S-  $ )N   r   r   selfs    S/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributions/uniform.pymeanUniform.mean%   s    		DHH$))    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.stddev-   s    		DHH$//r   c                 X    U R                   U R                  -
  R                  S5      S-  $ )Nr      )r   r   powr   s    r   varianceUniform.variance1   s%    		DHH$))!,r11r   c                   > [        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  U R                  (       aJ  [
        R                  " U R                  U R                  5      R                  5       (       d  [        S5      eg g )Nvalidate_argsz&Uniform is not defined when low>= high)r   r   r   
isinstancer   torchSizesizesuper__init___validate_argsltall
ValueError)r   r   r   r)   batch_shape	__class__s        r   r/   Uniform.__init__5   s    +C6$)c7##
4(A(A**,K((--/KBuxx$))'D'H'H'J'JEFF (Kr   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/   r0   )r   r4   	_instancenewr5   s       r   r9   Uniform.expandA   st    (()<jj-((//+.99##K0gs$[$F!00
r   c                 X    [         R                  " U R                  U R                  5      $ r   )r   intervalr   r   r   s    r   supportUniform.supportJ   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   rC   rD   r   )r   rA   shaperF   s       r   rsampleUniform.rsampleN   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   )
r0   _validate_sampler   letype_asr   gtr+   logmul)r   valuelbubs       r   log_probUniform.log_probS   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)r0   rK   r   r   clampr   rQ   results      r   cdfUniform.cdfZ   sJ    !!%((("tyy488';<||q|))r   c                 V    XR                   U R                  -
  -  U R                  -   nU$ r   r   r[   s      r   icdfUniform.icdf`   s%    ))dhh./$((:r   c                 \    [         R                  " U R                  U R                  -
  5      $ r   )r+   rO   r   r   r   s    r   entropyUniform.entropyd   s    yyTXX-..r   r   r   )__name__
__module____qualname____firstlineno____doc__r   	dependentarg_constraintshas_rsamplepropertyr   r   r   r    r%   r/   r9   dependent_propertyr?   r+   r,   r	   rH   rT   r]   r`   rc   __static_attributes____classcell__)r5   s   @r   r
   r
      s   $ $$!D%%%1EO K*f * * f   0 0 0 2& 2 2
G ##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>rw      s.      + 9 3 & +X/l X/r   