ó
    Eñ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    ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/uniform.pyÚarg_constraintsÚUniform.arg_constraints!   s2   € ô ×(Ò(¨¯©Ó3Ü×,Ò,¨T¯X©XÓ6ñ
ð 	
ó    Úreturnc                 ó:   • U R                   U R                  -   S-  $ )Né   ©r   r   r   s    r   ÚmeanÚUniform.mean)   s   € à—	‘	˜DŸH™HÑ$¨Ñ)Ð)r   c                 ó(   • [         U R                  -  $ ©N)r   r   r   s    r   ÚmodeÚUniform.mode-   s   € ä�T—Y‘Y‰Ðr   c                 ó:   • U R                   U R                  -
  S-  $ )NgªLXèz¶@r   r   s    r   ÚstddevÚUniform.stddev1   s   € à—	‘	˜DŸH™HÑ$¨Ñ/Ð/r   c                 óX   • U R                   U R                  -
  R                  S5      S-  $ )Nr   é   )r   r   Úpowr   s    r   ÚvarianceÚUniform.variance5   s%   € à—	‘	˜DŸH™HÑ$×)Ñ)¨!Ó,¨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ÑˆŒ�$”)ä�cœ7×#Ñ#¬
°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   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j’j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—9‘9×#Ñ# KÓ0ˆŒÜŒg�sÑ$ [ÀÐ$Ñ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   € ô ×#Ò# D§H¡H¨d¯i©iÓ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ˆÜ�zŠz˜%§x¡x§~¡~¸d¿h¹h¿o¹oÑNˆØ�x‰x˜$§)¡)¨d¯h©hÑ"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�   € Ø××Ø×!Ñ! %Ô(Ø�X‰X�[‰[˜Ó×'Ñ'¨¯©Ó1ˆØ�Y‰Y�\‰\˜%Ó ×(Ñ(¨¯©Ó2ˆÜ�yŠy˜Ÿ™ ›Ó$¤u§y¢y°·±¸T¿X¹XÑ1EÓ'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   € Ø××Ø×!Ñ! %Ô(ØŸ(™(Ñ" t§y¡y°4·8±8Ñ';Ñ<ˆØ�|‰|  qˆ|Ð)Ð)r   c                 óV   • XR                   U R                  -
  -  U R                  -   nU$ r   r   r]   s      r   ÚicdfÚUniform.icdfg   s%   € ØŸ)™) d§h¡hÑ.Ñ/°$·(±(Ñ:ˆØˆr   c                 ó\   • [         R                  " U R                  U R                  -
  5      $ r   )r.   rQ   r   r   r   s    r   ÚentropyÚUniform.entropyk   s   € Ü�yŠy˜Ÿ™ T§X¡XÑ-Ó.Ð.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ð �u‰nðCð ˜d‘{ð	Cð
 
÷Cð C÷ð ×#Ò#°ÀÑCñ9ó Dð9ð -2¯JªJ«Lñ 8 Eð 8¸Võ 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   