Ë
    üÇ:jâ'  ã                   óH  — d dl Zd dlmZmZmZmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZmZ ed„ «       Zed„ «       Zed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zy)é    N)Úuint64Úuint32Úuint16Úuint8)Úregister_jitable)Ú
UINT32_MAXÚ
UINT64_MAXÚ
UINT16_MAXÚ	UINT8_MAX)Únext_uint32Únext_uint64c                 ó|   — t        | «      }||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }|S )Né   é   é   é   é   é    )r   )ÚmaxÚmasks     ús/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/np/random/random_methods.pyÚgen_maskr      sd   € ä�#‹;€DØˆD�A‰IÑ€DØˆD�A‰IÑ€DØˆD�A‰IÑ€DØˆD�A‰IÑ€DØˆD�B‰JÑ€DØˆD�B‰JÑ€DØ€Kó    c                 ó`   — |dk(  r|||fS |st        | «      }d}n
|dz  }|dz  }|dz  dk7  ||fS )Nr   é   r   )r   )ÚbitgenÚoffÚrngÚbcntÚbufs        r   Úbuffered_bounded_boolr!      sN   € àˆqŠØ�D˜#ˆ~ÐÙÜ˜&Ó!ˆØ‰à�‰	ˆØ�‰	ˆà�1‰W˜‰N˜T 3Ð&Ð&r   c                 óR   — |st        | «      }d}n
|dz  }|dz  }t        |«      ||fS )Né   r   r   )r   r   ©r   r   r    s      r   Úbuffered_uint8r%   (   s7   € áÜ˜&Ó!ˆØ‰à�‰	ˆØ�‰	ˆä�‹:�t˜SÐ Ð r   c                 óR   — |st        | «      }d}n
|dz  }|dz  }t        |«      ||fS )Nr   r   )r   r   r$   s      r   Úbuffered_uint16r'   4   s7   € áÜ˜&Ó!ˆØ‰à�‰
ˆØ�‰	ˆä�#‹;˜˜cÐ!Ð!r   c                 ó(  — t        |«      t        d«      z   }|dk7  sJ ‚t        | ||«      \  }}}t        ||z  «      }|dz  }||k  rDt        t        «      |z
  |z  }||k  r*t        | ||«      \  }}}t        ||z  «      }|dz  }||k  rŒ*|dz	  ||fS )a?  
    Generates a random unsigned 8 bit integer bounded
    within a given interval using Lemire's rejection.

    The buffer acts as storage for a 32 bit integer
    drawn from the associated BitGenerator so that
    multiple integers of smaller bitsize can be generated
    from a single draw of the BitGenerator.
    r   éÿ   r   )r   r%   r   r   ©	r   r   r   r    Úrng_exclÚnÚmÚleftoverÚ	thresholds	            r   Úbuffered_bounded_lemire_uint8r0   B   s½   € ô �S‹zœE !›HÑ$€Hà�4ŠKÐˆKô " &¨$°Ó4�L€A€tˆSÜˆq�8‰|Ó€Að �4‰x€Hà�8ÒäœIÓ&¨Ñ,°Ñ8ˆ	à˜)Ò#Ü)¨&°$¸Ó<‰LˆAˆt�SÜ�q˜8‘|Ó$ˆAØ˜4‘xˆHð ˜)Ó#ð
 �‰6�4˜ÐÐr   c                 ó(  — t        |«      t        d«      z   }|dk7  sJ ‚t        | ||«      \  }}}t        ||z  «      }|dz  }||k  rDt        t        «      |z
  |z  }||k  r*t        | ||«      \  }}}t        ||z  «      }|dz  }||k  rŒ*|dz	  ||fS )a@  
    Generates a random unsigned 16 bit integer bounded
    within a given interval using Lemire's rejection.

    The buffer acts as storage for a 32 bit integer
    drawn from the associated BitGenerator so that
    multiple integers of smaller bitsize can be generated
    from a single draw of the BitGenerator.
    r   éÿÿ  r   )r   r'   r   r
   r*   s	            r   Úbuffered_bounded_lemire_uint16r3   f   s½   € ô �c‹{œV A›YÑ&€Hà�6ŠMÐˆMô # 6¨4°Ó5�L€A€tˆSÜˆq�8‰|Ó€Að �6‰z€Hà�8ÒäœZÓ(¨3Ñ.°(Ñ:ˆ	à˜)Ò#Ü*¨6°4¸Ó=‰LˆAˆt�SÜ�q˜8‘|Ó$ˆAØ˜6‘zˆHð ˜)Ó#ð
 �‰7�D˜#ÐÐr   c                 ó  — t        |«      t        d«      z   }|dk7  sJ ‚t        t        | «      «      t        |«      z  }|dz  }||k  r<t        |z
  |z  }||k  r+t        t        | «      «      t        |«      z  }|dz  }||k  rŒ+|dz	  S )zr
    Generates a random unsigned 32 bit integer bounded
    within a given interval using Lemire's rejection.
    r   ì   ÿÿ r   )r   r   r   r   )r   r   r+   r-   r.   r/   s         r   Úbuffered_bounded_lemire_uint32r6   Š   s¡   € ô �c‹{œV A›YÑ&€Hà�:ÒÐÐô 	Œ{˜6Ó"Ó#¤f¨XÓ&6Ñ6€Að �:‰~€Hà�8Òä #Ñ%¨Ñ1ˆ	à˜)Ò#Ü”{ 6Ó*Ó+¬f°XÓ.>Ñ>ˆAØ˜:‘~ˆHð ˜)Ó#ð �‰GÐr   c                 óÀ  — t        |«      t        d«      z   }|dk7  sJ ‚t        | «      }t        |«      t        |«      z  }||k  r9t        |z
  |z  }||k  r(t        | «      }t        |«      t        |«      z  }||k  rŒ(|t        d«      z  }|dz	  }|t        d«      z  }|dz	  }	||z  }
||z  |
dz	  z   }|t        d«      z  }|dz	  }|||	z  z  }||	z  |z   |dz	  z   }|S )zr
    Generates a random unsigned 64 bit integer bounded
    within a given interval using Lemire's rejection.
    r   ì   ÿÿÿÿ r5   r   )r   r   r	   )r   r   r+   Úxr.   r/   Úx0Úx1Ú	rng_excl0Ú	rng_excl1Úw0ÚtÚw1Úw2Úm1s                  r   Úbounded_lemire_uint64rC   ¥   s  € ô �c‹{œV A›YÑ&€HàÐ%Ò%Ð&Ð%ä�FÓ€Aä�a‹yœ6 (Ó+Ñ+€Hà�8ÒÜ #Ñ%¨Ñ1ˆ	à˜)Ò#Ü˜FÓ#ˆAÜ˜a“y¤6¨(Ó#3Ñ3ˆHð ˜)Ó#ð 
ŒV�JÓÑ	€BØ	
ˆb‰€BØœ6 *Ó-Ñ-€IØ˜B‘€IØ	ˆi‰€BØ
ˆY‰˜" ™(Ñ#€AØ	
ŒV�JÓÑ	€BØ	
ˆb‰€BØˆ"ˆy‰.Ñ€BØ	ˆi‰˜"Ñ	  b¡Ñ	)€Bà€Ir   c                 ó  — t        j                  ||¬«      }|dk(  r!t        j                  |«      D ]  }|||<   Œ	 |S |dk  r`|dk(  r-t        j                  |«      D ]  }|t        | «      z   ||<   Œ |S t        j                  |«      D ]  }|t	        | |«      z   ||<   Œ |S |dk(  r-t        j                  |«      D ]  }|t        | «      z   ||<   Œ |S t        j                  |«      D ]  }|t        | |«      z   ||<   Œ |S )z_
    Returns a new array of given size with 64 bit integers
    bounded by given interval.
    ©Údtyper   r5   r8   )ÚnpÚemptyÚndindexr   r6   r   rC   ©r   Úlowr   ÚsizerF   ÚoutÚis          r   Úrandom_bounded_uint64_fillrO   È   s4  € ô �(‰(�4˜uÔ
%€CØ
ˆa‚xÜ—‘˜DÓ!ò 	ˆAØˆC�ŠFð	ð" €Jð 
�
Ò	Ø�:ÒÜ—Z‘Z Ó%ò 3�Øœ{¨6Ó2Ñ2��A’ð3ð €Jô —Z‘Z Ó%ò K�ØÔ=¸fÀcÓJÑJ��A’ðKð €Jð Ð#Ò
#Ü—‘˜DÓ!ò 	/ˆAØœ; vÓ.Ñ.ˆC�ŠFð	/ð €Jô —‘˜DÓ!ò 	>ˆAØÔ0°¸Ó=Ñ=ˆC�ŠFð	>ð €Jr   c                 ó<  — t        j                  ||¬«      }|dk(  r!t        j                  |«      D ]  }|||<   Œ	 |S |dk(  r-t        j                  |«      D ]  }|t        | «      z   ||<   Œ |S t        j                  |«      D ]  }|t	        | |«      z   ||<   Œ |S )z_
    Returns a new array of given size with 32 bit integers
    bounded by given interval.
    rE   r   r5   )rG   rH   rI   r   r6   rJ   s          r   Úrandom_bounded_uint32_fillrQ   ä   s¶   € ô �(‰(�4˜uÔ
%€CØ
ˆa‚xÜ—‘˜DÓ!ò 	ˆAØˆC�ŠFð	ð €Jð 
�
Ò	ä—‘˜DÓ!ò 	/ˆAØœ; vÓ.Ñ.ˆC�ŠFð	/ð
 €Jô —‘˜DÓ!ò 	GˆAØÔ9¸&À#ÓFÑFˆC�ŠFð	Gà€Jr   c                 ód  — d}d}t        j                  ||¬«      }|dk(  r!t        j                  |«      D ]  }|||<   Œ	 |S |dk(  r5t        j                  |«      D ]  }t        | ||«      \  }	}}||	z   ||<   Œ |S t        j                  |«      D ]  }t	        | |||«      \  }	}}||	z   ||<   Œ |S )z_
    Returns a new array of given size with 16 bit integers
    bounded by given interval.
    r   rE   r2   )rG   rH   rI   r'   r3   ©
r   rK   r   rL   rF   r    r   rM   rN   Úvals
             r   Úrandom_bounded_uint16_fillrU   ø   sâ   € ð €CØ€Dä
�(‰(�4˜uÔ
%€CØ
ˆa‚xÜ—‘˜DÓ!ò 	ˆAØˆC�ŠFð	ð €Jð 
�Šä—‘˜DÓ!ò 	ˆAÜ,¨V°T¸3Ó?‰NˆC��sØ˜3‘YˆC�ŠFð	ð €Jô —‘˜DÓ!ò 	ˆAä.¨v°sØ/3°Só:ñ ˆC��sð ˜3‘YˆC�ŠFð		ð
 €Jr   c                 ód  — d}d}t        j                  ||¬«      }|dk(  r!t        j                  |«      D ]  }|||<   Œ	 |S |dk(  r5t        j                  |«      D ]  }t        | ||«      \  }	}}||	z   ||<   Œ |S t        j                  |«      D ]  }t	        | |||«      \  }	}}||	z   ||<   Œ |S )z^
    Returns a new array of given size with 8 bit integers
    bounded by given interval.
    r   rE   r)   )rG   rH   rI   r%   r0   rS   s
             r   Úrandom_bounded_uint8_fillrW     sâ   € ð €CØ€Dä
�(‰(�4˜uÔ
%€CØ
ˆa‚xÜ—‘˜DÓ!ò 	ˆAØˆC�ŠFð	ð €Jð 
�Šä—‘˜DÓ!ò 	ˆAÜ+¨F°D¸#Ó>‰NˆC��sØ˜3‘YˆC�ŠFð	ð €Jô —‘˜DÓ!ò 	ˆAä-¨f°cØ.2°Có9ñ ˆC��sð ˜3‘YˆC�ŠFð		ð
 €Jr   c                 ó¦   — d}d}t        j                  ||¬«      }t        j                  |«      D ]  }t        | ||||«      \  }	}}||	z   ||<   Œ |S )z@
    Returns a new array of given size with boolean values.
    r   rE   )rG   rH   rI   r!   rS   s
             r   Úrandom_bounded_bool_fillrY   /  sb   € ð
 €CØ€DÜ
�(‰(�4˜uÔ
%€CÜ�Z‰Z˜Óò ˆÜ.¨v°s¸CÀÀsÓK‰ˆˆT�3Ø�s‘ˆˆAŠðð €Jr   c                 ó  — | |k  rt        d«      ‚|dkD  rWt        |«      }|s|t        d«      z  }t        |«      }| dkD  rt        | «      } ||kD  rt        d«      ‚| |kD  rt        d«      ‚y||kD  rt        d«      ‚| |kD  rt        d«      ‚y)zS
    Check that low and high are within the bounds
    for the given datatype.
    zlow is out of boundsr   r   zhigh is out of boundsz*low is greater than high in given intervalN)Ú
ValueErrorr   )rK   ÚhighÚendpointÚlower_boundÚupper_bounds        r   Ú_randint_arg_checkr`   =  s¯   € ð ˆ[ÒÜÐ/Ó0Ð0ð
 ˆa‚xÜ�d‹|ˆÙØ”F˜1“IÑˆDÜ˜[Ó)ˆØ�Š7Ü˜“+ˆCØ�+ÒÜÐ4Ó5Ð5Ø�Š:ÜÐIÓJÐJð ð �+ÒÜÐ4Ó5Ð5Ø�Š:ÜÐIÓJÐJð r   c                 óB  — |dk(  ryt        |«      }t        t        |«      «      }|dk  rDt        t        | «      «      |z  }||kD  rOt        t        | «      «      |z  }||kD  rŒt        |«      S t        | «      |z  }||kD  rt        | «      |z  }||kD  rŒt        |«      S )Nr   r5   )r   r   r   r   )r   Úmax_valr   Úvalues       r   Úrandom_intervalrd   \  s¬   € à�1ŠØä�W‹o€GÜ”(˜7Ó#Ó$€Dà�:ÒÜ”{ 6Ó*Ó+¨dÑ2ˆØ�gŠoÜœ; vÓ.Ó/°$Ñ6ˆEð �g‹oô �%‹=Ðô	 ˜FÓ# dÑ*ˆØ�gŠoÜ Ó'¨$Ñ.ˆEð �g‹oô �%‹=Ðr   ) ÚnumpyrG   Únumbar   r   r   r   Únumba.core.extendingr   Únumba.np.random._constantsr   r	   r
   r   Únumba.np.random.generator_corer   r   r   r!   r%   r'   r0   r3   r6   rC   rO   rQ   rU   rW   rY   r`   rd   © r   r   ú<module>rk      sO  ðÛ ç /Ó /Ý 1÷?ó ?ç Cð ñó ðð ñ
'ó ð
'ð ñ!ó ð!ð ñ"ó ð"ð ñ ó ð ðF ñ ó ð ðF ñó ðð4 ñó ððD ñó ðð6 ñó ðð& ñó ðð6 ñó ðð4 ñ
ó ð
ð ñKó ðKð< ñó ñr   