U C^@s8ddlZddlZddlmZddlmZeZejj Z ejj Z ddZ eje ddZdZd d ZejeZd d ZeZeZejefkstejejksteed dZedeeeed dZedeeejjZ ejj!Z"ejddddZ#ee#dde"j$ejddddZ%e%ddde"j$dS)N)PCG64)timeitcCst|}t|ddD]}dt|d}dt|d}||||}|dks^|dkrdt|d}dt|d}||||}qNtdt||}|||d|<d|d|kr|||d|d<q|S)Ng@g?gg)npemptyrangenext_dsqrtlog)nstateoutix1Zx2r2frI/tmp/pip-install-6_kvzl1k/numpy/numpy/random/_examples/numba/extending.pynormals s rT)Znopythoni'cCs tttS)N)normalsjr state_addrrrrr numbacall srcCs tjtdS)N)size)rgnormalr rrrr numpycall%sri)numberz7{:.2f} secs for {} PCG64 (Numba/PCG64) gaussian randomsz7{:.2f} secs for {} PCG64 (NumPy/PCG64) gaussian randomscCsr||}}||d?O}||d?O}||d?O}||d?O}||d?O}t||@}||krjt||@}qT||S)Nrr)next_u32)lbubr maskdeltavalrrr bounded_uint8s       r'iCiC$cCs2tj|tjd}t|D]}t|||||<qdS)N)Zdtype)rrZuint32rr')r"r#r r rrrrr bounded_uintsKs r(i)&ZnumpyrZnumbanbZ numpy.randomrrZbit_genZcffiZ next_doubler Z state_addressrrZjitrr rrandom GeneratorrrZr1rshapeAssertionErrort1printformatt2ctypesZ next_uint32r!r Z ctypes_stater'valuer(rrrrs8