
    J/Ph'                        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dS )    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     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/np/random/old_random_methods.pygen_maskr      sf    #;;DDAIDDAIDDAIDDAIDDBJDDBJDK    c                 l    |dk    r|||fS |st          |           }d}n
|dz  }|dz  }|dz  dk    ||fS )Nr      r   )r   )bitgenoffrngbcntbufs        r   buffered_bounded_boolr!      sZ    qD#~ &!!		1WNT3&&r   c                 b    |st          |           }d}n
|dz  }|dz  }t          |          ||fS )N   r   r   )r   r   r   r   r    s      r   buffered_uint8r%   (   sC     &!!		::tS  r   c                 b    |st          |           }d}n
|dz  }|dz  }t          |          ||fS )Nr   r   )r   r   r$   s      r   buffered_uint16r'   4   sC     &!!
	#;;c!!r   c                 h   t          |          t          d          z   }|dk    sJ t          | ||          \  }}}t          ||z            }|dz  }||k     rRt          t                    |z
  |z  }||k     r2t          | ||          \  }}}t          ||z            }|dz  }||k     2|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     SzzE!HH$H4KKKK "&$44LAtSq8|A 4xH8I&&,8	)##)&$<<LAtSq8|$$A4xH )##
 64r   c                 h   t          |          t          d          z   }|dk    sJ t          | ||          \  }}}t          ||z            }|dz  }||k     rRt          t                    |z
  |z  }||k     r2t          | ||          \  }}}t          ||z            }|dz  }||k     2|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{{VAYY&H6MMMM #6455LAtSq8|A 6zH8Z((3.(:	)##*64==LAtSq8|$$A6zH )##
 7D#r   c                 \   t          |          t          d          z   }|dk    sJ t          t          |                     t          |          z  }|dz  }||k     rJt          |z
  |z  }||k     r7t          t          |                     t          |          z  }|dz  }||k     7|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{{VAYY&H: 	{6""##fX&6&66A :~H8#%1	)##{6**++fX.>.>>A:~H )## Gr   c                     t          |          t          d          z   }|dk    sJ t          |           }t          |          t          |          z  }||k     rGt          |z
  |z  }||k     r4t          |           }t          |          t          |          z  }||k     4|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{{VAYY&H%%%%%FAayy6(+++H8#%1	)##F##Aayy6(#3#33H )## 
VJ	B	
bB6*---IBI	iB
Y"(#A	
VJ	B	
bB"y.B	i"	b	)BIr   c                    t          j        ||          }|dk    rt          j        |          D ]}|||<   n|dk    ra|dk    r-t          j        |          D ]}|t          |           z   ||<   nt          j        |          D ]}|t	          | |          z   ||<   n`|dk    r-t          j        |          D ]}|t          |           z   ||<   n-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      sS    (4u
%
%
%C
axxD!! 	 	ACFF		
		:Z%% 3 3{6222A3 Z%% K K=fcJJJAK #
#
#D!! 	/ 	/A;v...CFF	/ D!! 	> 	>A0===CFFJr   c                 8   t          j        ||          }|dk    rt          j        |          D ]}|||<   n`|dk    r-t          j        |          D ]}|t          |           z   ||<   n-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     (4u
%
%
%C
axxD!! 	 	ACFF		
		D!! 	/ 	/A;v...CFF	/ D!! 	G 	GA9&#FFFCFFJr   c                 `   d}d}t          j        ||          }|dk    rt          j        |          D ]}|||<   np|dk    r5t          j        |          D ]}t          | ||          \  }	}}||	z   ||<    n5t          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
(4u
%
%
%C
axxD!! 	 	ACFF		D!! 	 	A,VT3??NCs3YCFF	
 D!! 	 	A.vs/3S: : Cs 3YCFFJr   c                 `   d}d}t          j        ||          }|dk    rt          j        |          D ]}|||<   np|dk    r5t          j        |          D ]}t          | ||          \  }	}}||	z   ||<    n5t          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
(4u
%
%
%C
axxD!! 	 	ACFF		D!! 	 	A+FD#>>NCs3YCFF	 D!! 	 	A-fc.2C9 9 Cs 3YCFF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   /  sj    
 CD
(4u
%
%
%CZ  .vsCsKKT3sAJr   c                 v   | |k     rt          d          |dk    rst          |          }|s|t          d          z  }t          |          }| dk    rt          |           } ||k    rt          d          | |k    rt          d          dS ||k    rt          d          | |k    rt          d          dS )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0
 axxd|| 	F1IID[))77++C+4555::IJJJ : +4555::IJJJ :r   c                    |dk    rdS t          |          }t          t          |                    }|dk    rKt          t          |                     |z  }||k    r%t          t          |                     |z  }||k    %n0t          |           |z  }||k    rt          |           |z  }||k    t          |          S )Nr   r5   )r   r   r   r   )r   max_valr   values       r   random_intervalrd   \  s    1qWooG(7##$$D:{6**++d2goo;v..//$6E goo F##d*goo''$.E goo %==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 1 1 1 1 1? ? ? ? ? ? ? ? ? ? ? ? C C C C C C C C    
' 
' 
' ! ! ! " " "      F      F   4   D   6   &   6   4 
 
 
 K K K<     r   