o
    g                     @   sD  d dl Zd dlZd dlmZ d dlmZ e Zejj	Z
ejjZdd ZejeddZdZd	d
 Zeje Zdd Ze Ze ZejefksIJ ejejksQJ eeddZeedde d eeddZeedde d ejjZejjZ ejdddd Z!ee!dde j" ejdddd Z#e#ddde j" dS )    N)PCG64)timeitc                 C   s   t | }t| d d D ]h}dt| d }dt| d }|| ||  }|dks/|dkrOdt| d }dt| d }|| ||  }|dks/|dks/t dt | | }|| |d| < d| d | k ru|| |d| d < q|S )N      g       @g      ?g        g       )npemptyrangenext_dsqrtlog)nstateoutix1x2r2f r   `/var/www/html/api-tag/env/lib/python3.10/site-packages/numpy/random/_examples/numba/extending.pynormals   s    
r   T)nopythoni'  c                   C   s
   t ttS )N)normalsjr   
state_addrr   r   r   r   	numbacall    s   
r   c                   C   s   t jtdS )N)size)rgnormalr   r   r   r   r   	numpycall%   s   r   i  )numberz.2fz
 secs for z% PCG64 (Numba/PCG64) gaussian randomsz% PCG64 (NumPy/PCG64) gaussian randomsc                 C   sx   ||   }}||d? O }||d? O }||d? O }||d? O }||d? O }t ||@ }||kr8t ||@ }||ks.| | S )Nr   r            )next_u32)lbubr   maskdeltavalr   r   r   bounded_uint8   s   r)   iC  iC$ c                 C   s2   t j|t jd}t|D ]
}t| ||||< qd S )N)dtype)r   r   uint32r   r)   )r$   r%   r   r   r   r   r   r   r   bounded_uintsK   s   r,   i )$numpyr   numbanbnumpy.randomr   r   bit_gencffinext_doubler	   state_addressr   r   jitr   r   r   random	Generatorr   r   r1r   shapet1printt2ctypesnext_uint32r#   r   ctypes_stater)   valuer,   r   r   r   r   <module>   s:    



