o
    Je                     @   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x1Zx2r2f r   t/home/seandotau/au.memorygallery.club/gallery/lib/python3.10/site-packages/numpy/random/_examples/numba/extending.pynormals   s    
r   T)Z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)Zdtype)r   r   Zuint32r   r'   )r"   r#   r   r   r   r   r   r   r   bounded_uintsK   s   r(   i )$numpyr   ZnumbanbZnumpy.randomr   r   Zbit_genZcffiZnext_doubler	   Zstate_addressr   r   Zjitr   r   r   random	Generatorr   r   r1r   shapet1printt2ctypesZnext_uint32r!   r   Zctypes_stater'   valuer(   r   r   r   r   <module>   s:    



