Ë
    óÍ:j!  ã                   ó|   — d dl mZmZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ dgZ G d	„ de	«      Zy)
é    )ÚOptionalÚUnionN)ÚnanÚTensor)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_NumberÚ_sizeÚUniformc            	       óH  ‡ — e Zd ZdZdZed„ «       Zedefd„«       Zedefd„«       Z	edefd„«       Z
edefd„«       Z	 dd
eeef   deeef   dee   dd	fˆ fd„Zdˆ fd„	Z ej&                  dd¬«      d„ «       Z ej,                  «       fdede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).
    Tc                 ó€   — t        j                  | j                  «      t        j                  | j                  «      dœS )N)ÚlowÚhigh)r   Ú	less_thanr   Úgreater_thanr   ©Úselfs    úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torch/distributions/uniform.pyÚarg_constraintszUniform.arg_constraints"   s2   € ô ×(Ñ(¨¯©Ó3Ü×,Ñ,¨T¯X©XÓ6ñ
ð 	
ó    Úreturnc                 ó:   — | j                   | j                  z   dz  S )Né   ©r   r   r   s    r   ÚmeanzUniform.mean*   s   € à—	‘	˜DŸH™HÑ$¨Ñ)Ð)r   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.stddev2   s   € à—	‘	˜DŸH™HÑ$¨Ñ/Ð/r   c                 óX   — | j                   | j                  z
  j                  d«      dz  S )Nr   é   )r   r   Úpowr   s    r   ÚvariancezUniform.variance6   s%   € à—	‘	˜DŸH™HÑ$×)Ñ)¨!Ó,¨rÑ1Ð1r   Nr   r   Úvalidate_argsc                 óø   •— t        ||«      \  | _        | _        t        |t        «      r%t        |t        «      rt        j                  «       }n| j                  j                  «       }t        ‰| �%  ||¬«       y )N©r&   )
r	   r   r   Ú
isinstancer
   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   r&   Úbatch_shapeÚ	__class__s        €r   r.   zUniform.__init__:   sY   ø€ ô ,¨C°Ó6ÑˆŒ�$”)ä�cœ7Ô#¬
°4¼Ô(AÜŸ*™*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜°MÐÕBr   c                 ó*  •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        | j                  j                  |«      |_        t        t        |�#  |d¬«       | j                  |_	        |S )NFr(   )
Ú_get_checked_instancer   r*   r+   r   Úexpandr   r-   r.   Ú_validate_args)r   r/   Ú	_instanceÚnewr0   s       €r   r3   zUniform.expandH   st   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j‘j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—9‘9×#Ñ# KÓ0ˆŒÜŒg�sÑ$ [ÀÐ$ÔFØ!×0Ñ0ˆÔØˆ
r   Fr   )Úis_discreteÚ	event_dimc                 óV   — t        j                  | j                  | j                  «      S r   )r   Úintervalr   r   r   s    r   ÚsupportzUniform.supportQ   s   € ä×#Ñ# D§H¡H¨d¯i©iÓ8Ð8r   Úsample_shapec                 óö   — | j                  |«      }t        j                  || j                  j                  | j                  j
                  ¬«      }| j                  || j                  | j                  z
  z  z   S )N)ÚdtypeÚdevice)Ú_extended_shaper*   Úrandr   r>   r?   r   )r   r<   ÚshaperA   s       r   ÚrsamplezUniform.rsampleU   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   )
r4   Ú_validate_sampler   ÚleÚtype_asr   Úgtr*   ÚlogÚmul)r   ÚvalueÚlbÚubs       r   Úlog_probzUniform.log_probZ   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)r4   rE   r   r   Úclamp©r   rK   Úresults      r   ÚcdfzUniform.cdfa   sL   € Ø×ÒØ×!Ñ! %Ô(Ø˜$Ÿ(™(Ñ" t§y¡y°4·8±8Ñ';Ñ<ˆØ�|‰|  qˆ|Ó)Ð)r   c                 óX   — || j                   | j                  z
  z  | j                  z   }|S r   r   rT   s      r   ÚicdfzUniform.icdfg   s'   € Ø˜$Ÿ)™) d§h¡hÑ.Ñ/°$·(±(Ñ:ˆØˆr   c                 óZ   — t        j                  | j                  | j                  z
  «      S r   )r*   rI   r   r   r   s    r   ÚentropyzUniform.entropyk   s   € Ü�y‰y˜Ÿ™ T§X¡XÑ-Ó.Ð.r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úhas_rsampleÚpropertyr   r   r   r   r!   r%   r   Úfloatr   Úboolr.   r3   r   Údependent_propertyr;   r*   r+   r   rC   rN   rV   rX   rZ   Ú__classcell__)r0   s   @r   r   r      s6  ø„ ñð  €Kàñ
ó ð
ð ð*�fò *ó ð*ð ð�fò ó ðð ð0˜ò 0ó ð0ð ð2˜&ò 2ó ð2ð )-ñ	Cà�6˜5�=Ñ!ðCð �F˜E�MÑ"ðCð   ‘~ð	Cð
 
õCõð $€[×#Ñ#°ÀÔCñ9ó Dð9ð -7¨E¯J©J«Lñ 8 Eð 8¸Vó 8ò
Gò*òö/r   )Útypingr   r   r*   r   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr	   Útorch.typesr
   r   Ú__all__r   © r   r   ú<module>rl      s1   ðç "ã ß Ý +Ý 9Ý 3ß &ð ˆ+€ô]/ˆlõ ]/r   