Ë
    P/æjû  ã                   óp   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ dgZ G d	„ de«      Zy)
é    )ÚNumberN)Únan)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_sizeÚUniformc                   óX  ‡ — e Zd ZdZ ej
                  dd¬«       ej
                  dd¬«      dœZdZed„ «       Z	ed„ «       Z
ed	„ «       Zed
„ «       Zdˆ fd„	Zdˆ fd„	Z ej                  dd¬«      d„ «       Z ej$                  «       fdedej(                  fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )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ÚhighTc                 ó:   — | j                   | j                  z   dz  S )Né   ©r   r   ©Úselfs    ú^/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/distributions/uniform.pyÚmeanzUniform.mean&   s   € à—	‘	˜DŸH™HÑ$¨Ñ)Ð)ó    c                 ó(   — t         | j                  z  S ©N)r   r   r   s    r   ÚmodezUniform.mode*   s   € ä�T—Y‘Y‰Ðr   c                 ó:   — | j                   | j                  z
  dz  S )NgªLXèz¶@r   r   s    r   ÚstddevzUniform.stddev.   s   € à—	‘	˜DŸH™HÑ$¨Ñ/Ð/r   c                 óX   — | j                   | j                  z
  j                  d«      dz  S )Nr   é   )r   r   Úpowr   s    r   ÚvariancezUniform.variance2   s%   € à—	‘	˜DŸH™HÑ$×)Ñ)¨!Ó,¨rÑ1Ð1r   c                 ó˜  •— t        ||«      \  | _        | _        t        |t        «      r%t        |t        «      rt        j                  «       }n| j                  j                  «       }t        ‰| �%  ||¬«       | j                  rDt        j                  | j                  | j                  «      j                  «       st        d«      ‚y y )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(   zUniform.__init__6   s“   ø€ Ü+¨C°Ó6ÑˆŒ�$”)ä�cœ6Ô"¤z°$¼Ô'?ÜŸ*™*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜°MÐÔBà×Ò¤u§x¡x°·±¸$¿)¹)Ó'D×'HÑ'HÔ'JÜÐEÓFÐFð (KÐr   c                 ó*  •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        | j                  j                  |«      |_        t        t        |�#  |d¬«       | j                  |_	        |S )NFr!   )
Ú_get_checked_instancer	   r$   r%   r   Úexpandr   r'   r(   r)   )r   r-   Ú	_instanceÚnewr.   s       €r   r1   zUniform.expandB   st   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j‘j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—9‘9×#Ñ# KÓ0ˆŒÜŒg�sÑ$ [ÀÐ$ÔFØ!×0Ñ0ˆÔØˆ
r   c                 óV   — t        j                  | j                  | j                  «      S r   )r   Úintervalr   r   r   s    r   ÚsupportzUniform.supportK   s   € ä×#Ñ# D§H¡H¨d¯i©iÓ8Ð8r   Úsample_shapeÚreturnc                 óö   — | j                  |«      }t        j                  || j                  j                  | j                  j
                  ¬«      }| j                  || j                  | j                  z
  z  z   S )N)ÚdtypeÚdevice)Ú_extended_shaper$   Úrandr   r:   r;   r   )r   r7   Úshaper=   s       r   ÚrsamplezUniform.rsampleO   sU   € Ø×$Ñ$ \Ó2ˆÜ�z‰z˜% t§x¡x§~¡~¸d¿h¹h¿o¹oÔNˆØ�x‰x˜$ $§)¡)¨d¯h©hÑ"6Ñ7Ñ7Ð7r   c                 ó®  — | j                   r| j                  |«       | j                  j                  |«      j	                  | j                  «      }| j
                  j                  |«      j	                  | j                  «      }t        j                  |j                  |«      «      t        j                  | j
                  | j                  z
  «      z
  S r   )
r)   Ú_validate_sampler   ÚleÚtype_asr   Úgtr$   ÚlogÚmul)r   ÚvalueÚlbÚubs       r   Úlog_probzUniform.log_probT   s�   € Ø×ÒØ×!Ñ! %Ô(Ø�X‰X�[‰[˜Ó×'Ñ'¨¯©Ó1ˆØ�Y‰Y�\‰\˜%Ó ×(Ñ(¨¯©Ó2ˆÜ�y‰y˜Ÿ™ ›Ó$¤u§y¡y°·±¸T¿X¹XÑ1EÓ'FÑFÐFr   c                 ó´   — | j                   r| j                  |«       || j                  z
  | j                  | j                  z
  z  }|j	                  dd¬«      S )Nr   é   )ÚminÚmax)r)   rA   r   r   Úclamp©r   rG   Úresults      r   ÚcdfzUniform.cdf[   sL   € Ø×ÒØ×!Ñ! %Ô(Ø˜$Ÿ(™(Ñ" t§y¡y°4·8±8Ñ';Ñ<ˆØ�|‰|  qˆ|Ó)Ð)r   c                 óX   — || j                   | j                  z
  z  | j                  z   }|S r   r   rP   s      r   ÚicdfzUniform.icdfa   s'   € Ø˜$Ÿ)™) d§h¡hÑ.Ñ/°$·(±(Ñ:ˆØˆr   c                 óZ   — t        j                  | j                  | j                  z
  «      S r   )r$   rE   r   r   r   s    r   ÚentropyzUniform.entropye   s   € Ü�y‰y˜Ÿ™ T§X¡XÑ-Ó.Ð.r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú	dependentÚarg_constraintsÚhas_rsampleÚpropertyr   r   r   r   r(   r1   Údependent_propertyr6   r$   r%   r   ÚTensorr?   rJ   rR   rT   rV   Ú__classcell__)r.   s   @r   r	   r	      sò   ø„ ñð" %ˆ{×$Ñ$°À!ÔDØ%�×%Ñ%°%À1ÔEñ€Oð €Kàñ*ó ð*ð ñó ðð ñ0ó ð0ð ñ2ó ð2õ
Gõð $€[×#Ñ#°ÀÔCñ9ó Dð9ð -7¨E¯J©J«Lñ 8 Eð 8¸U¿\¹\ó 8ò
Gò*òö/r   )Únumbersr   r$   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr   Ú__all__r	   © r   r   ú<module>ri      s1   ðå ã Ý Ý +Ý 9Ý 3Ý ð ˆ+€ôW/ˆlõ W/r   