
    J/Ph!(                        d dl 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)register_jitable)
UINT32_MAX
UINT64_MAX
UINT16_MAX	UINT8_MAX)next_uint32next_uint64c                     t          j        |           }||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }||dz	  z  }|S )N                   )npuint64)maxmasks     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/np/random/new_random_methods.pygen_maskr      sh    9S>>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                 l    |st          |           }d}n
|dz  }|dz  }t          j        |          ||fS )N   r   r   )r   r   uint8r   r   r   s      r   buffered_uint8r$   '   sE     &!!		8C==$##r   c                 l    |st          |           }d}n
|dz  }|dz  }t          j        |          ||fS )Nr   r   )r   r   uint16r#   s      r   buffered_uint16r'   3   sE     &!!
	9S>>4$$r   c                    t          j        |          t          j        d          z   }|dk    sJ t          | ||          \  }}}t          j        ||z            }|dz  }||k     r\t          j        t                    |z
  |z  }||k     r7t          | ||          \  }}}t          j        ||z            }|dz  }||k     7|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   r   rng_exclnmleftover	thresholds	            r   buffered_bounded_lemire_uint8r0   A   s     x}}rx{{*H4KKKK "&$44LAtS
	!h,A 4xH8hy))C/8;	)##)&$<<LAtS	!h,''A4xH )##
 64r   c                    t          j        |          t          j        d          z   }|dk    sJ t          | ||          \  }}}t          j        ||z            }|dz  }||k     r\t          j        t                    |z
  |z  }||k     r7t          | ||          \  }}}t          j        ||z            }|dz  }||k     7|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'   uint32r   r*   s	            r   buffered_bounded_lemire_uint16r4   e   s     y~~	!,H6MMMM #6455LAtS
	!h,A 6zH8i
++c1X=	)##*64==LAtS	!h,''A6zH )##
 7D#r   c                    t          j        |          t          j        d          z   }|dk    sJ t          j        t          |                     t          j        |          z  }|dz  }||k     rTt          |z
  |z  }||k     rAt          j        t          |                     t          j        |          z  }|dz  }||k     A|dz	  S )zr
    Generates a random unsigned 32 bit integer bounded
    within a given interval using Lemire's rejection.
    r       r   )r   r3   r   r   r   )r   r   r+   r-   r.   r/   s         r   buffered_bounded_lemire_uint32r7      s     y~~	!,H: 		+f%%&&8)<)<<A :~H8#%1	)##	+f--..81D1DDA:~H )## Gr   c                 z   t          j        |          t          j        d          z   }|dk    sJ t          |           }t          j        |          t          j        |          z  }||k     rQt          |z
  |z  }||k     r>t          |           }t          j        |          t          j        |          z  }||k     >|t          j        d          z  }|dz	  }|t          j        d          z  }|dz	  }	||z  }
||z  |
dz	  z   }|t          j        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       r6   r   )r   r   r	   r   )r   r   r+   xr.   r/   x0x1	rng_excl0	rng_excl1w0tw1w2m1s                  r   bounded_lemire_uint64rD      sR    y~~	!,H%%%%%FAy||bi111H8#%1	)##F##Ay||bi&9&99H )## 
RYz""	"B	
bB29Z000IBI	iB
Y"(#A	
RYz""	"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   r6   r9   )r   emptyndindexr   r7   r	   rD   r   lowr   sizerG   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.
    rF   r   r6   )r   rH   rI   r   r7   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   rF   r2   )r   rH   rI   r'   r4   
r   rK   r   rL   rG   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   rF   r)   )r   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   rF   )r   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                    | |k     rt          d          |dk    rt          j        |          }|s|t          j        d          z  }t          j        |          }| dk    rt          j        |           } ||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   r   )rK   highendpointlower_boundupper_bounds        r   _randint_arg_checkr`   <  s     [/000
 axxy 	!BIaLL Di,,77)C..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          j        |          }t          j        t          |                    }|dk    rUt          j        t          |                     |z  }||k    r*t          j        t          |                     |z  }||k    *n0t	          |           |z  }||k    rt	          |           |z  }||k    t          j        |          S )Nr   r6   )r   r   r   r   r	   )r   max_valr   values       r   random_intervalrd   [  s    1qi  G9Xg&&''D:	+f--..5gooIk&1122T9E goo F##d*goo''$.E goo 9Ur   )numpyr   numba.core.extendingr   numba.np.random._constantsr   r   r   r   numba.np.random.generator_corer   r	   r   r   r$   r'   r0   r4   r7   rD   rO   rQ   rU   rW   rY   r`   rd    r   r   <module>rj      s+       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   