U
    O8c                     @   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stejejkst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 ]}dt| d }dt| d }|| ||  }|dks^|dkrdt| d }dt| d }|| ||  }qNt dt | | }|| |d| < d| d | k r|| |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   J/tmp/pip-unpacked-wheel-fd_gsd75/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   sr   ||   }}||d? O }||d? O }||d? O }||d? O }||d? O }t ||@ }||krjt ||@ }qT| | 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 )%Znumpyr   ZnumbanbZnumpy.randomr   r   Zbit_genZcffiZnext_doubler	   Zstate_addressr   r   Zjitr   r   r   random	Generatorr   r   Zr1r   shapeAssertionErrort1printt2ctypesZnext_uint32r!   r   Zctypes_stater'   valuer(   r   r   r   r   <module>   s8   



