3
Kd                 @   s8  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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djee eeddZedjee 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 j| }xt| d d D ]}dt| d }dt| d }|| ||  }xD|dksb|dkrdt| d }dt| d }|| ||  }qRW t jdt j| | }|| |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   Z/var/www/html/virt/lib64/python3.6/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  )numberz7{:.2f} secs for {} PCG64 (Numba/PCG64) gaussian randomsz7{:.2f} secs for {} 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 )&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formatt2ctypesZnext_uint32r!   r   Zctypes_stater'   valuer(   r   r   r   r   <module>   s4   