B
    F0d                 @   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 | }xt| d d D ]}dt| d }dt| d }|| ||  }xD|dksb|dkrdt| d }dt| d }|| ||  }qRW t dt | | }|| |d| < d| d | k r|| |d| d < qW |S )N      g       @g      ?g        g       )npemptyrangenext_dsqrtlog)nstateoutix1Zx2r2f r   X/var/www/html/venv/lib/python3.7/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   sv   ||   }}||d? O }||d? O }||d? O }||d? O }||d? O }t ||@ }x||krlt ||@ }qVW | | S )Nr   r            )next_u32)lbubr   maskdeltavalr   r   r   bounded_uint8   s    
r'   iC  iC$ c             C   s6   t j|t jd}x t|D ]}t| ||||< qW 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AssertionErrort1printt2ctypesZnext_uint32r!   r   Zctypes_stater'   valuer(   r   r   r   r   <module>   s4   