o 6a@sDddlZddlZddlmZddlmZeZejj Z ejj Z ddZ eje ddZdZd d ZejeZd d ZeZeZejefksIJejejksQJeed dZeeddedeed dZeeddedejjZejjZ ejddddZ!ee!dde j"ejddddZ#e#ddde j"dS)N)PCG64)timeitcCst|}t|ddD]h}dt|d}dt|d}||||}|dks/|dkrOdt|d}dt|d}||||}|dks/|dks/tdt||}|||d|<d|d|kru|||d|d<q |S)Ng@g?gg)npemptyrangenext_dsqrtlog)nstateoutix1x2r2frH/usr/lib/python3/dist-packages/numpy/random/_examples/numba/extending.pynormals s rT)nopythoni'cCs tttS)N)normalsjr state_addrrrrr numbacall s rcCs tjtdS)N)size)rgnormalr rrrr numpycall%s ri)numberz.2fz secs for z% PCG64 (Numba/PCG64) gaussian randomsz% PCG64 (NumPy/PCG64) gaussian randomscCsx||}}||d?O}||d?O}||d?O}||d?O}||d?O}t||@}||kr8t||@}||ks.||S)Nrr)next_u32)lbubr maskdeltavalrrr bounded_uint8s        r)iCiC$cCs2tj|tjd}t|D] }t|||||<q dS)N)dtype)rruint32rr))r$r%r r rrrrr bounded_uintsKs r,i)$numpyrnumbanb numpy.randomrrbit_gencffi next_doubler state_addressrrjitrr rrandom Generatorrrr1rshapet1printt2ctypes next_uint32r#r ctypes_stater)valuer,rrrrs: