Created starter files for the project.
This commit is contained in:
commit
73f0c0db42
1992 changed files with 769897 additions and 0 deletions
|
@ -0,0 +1,40 @@
|
|||
"""
|
||||
Use cffi to access any of the underlying C functions from distributions.h
|
||||
"""
|
||||
import os
|
||||
import numpy as np
|
||||
import cffi
|
||||
from .parse import parse_distributions_h
|
||||
ffi = cffi.FFI()
|
||||
|
||||
inc_dir = os.path.join(np.get_include(), 'numpy')
|
||||
|
||||
# Basic numpy types
|
||||
ffi.cdef('''
|
||||
typedef intptr_t npy_intp;
|
||||
typedef unsigned char npy_bool;
|
||||
|
||||
''')
|
||||
|
||||
parse_distributions_h(ffi, inc_dir)
|
||||
|
||||
lib = ffi.dlopen(np.random._generator.__file__)
|
||||
|
||||
# Compare the distributions.h random_standard_normal_fill to
|
||||
# Generator.standard_random
|
||||
bit_gen = np.random.PCG64()
|
||||
rng = np.random.Generator(bit_gen)
|
||||
state = bit_gen.state
|
||||
|
||||
interface = rng.bit_generator.cffi
|
||||
n = 100
|
||||
vals_cffi = ffi.new('double[%d]' % n)
|
||||
lib.random_standard_normal_fill(interface.bit_generator, n, vals_cffi)
|
||||
|
||||
# reset the state
|
||||
bit_gen.state = state
|
||||
|
||||
vals = rng.standard_normal(n)
|
||||
|
||||
for i in range(n):
|
||||
assert vals[i] == vals_cffi[i]
|
Loading…
Add table
Add a link
Reference in a new issue