67 lines
1.7 KiB
Cython
67 lines
1.7 KiB
Cython
|
|
import numpy as np
|
|
cimport numpy as np
|
|
from libcpp cimport bool
|
|
|
|
DEF LASP_FLOAT = "@LASP_FLOAT@"
|
|
|
|
IF LASP_FLOAT == "double":
|
|
ctypedef double d
|
|
ctypedef double complex c
|
|
NUMPY_FLOAT_TYPE = np.float64
|
|
NUMPY_COMPLEX_TYPE = np.complex128
|
|
CYTHON_NUMPY_FLOAT_t = np.NPY_FLOAT64
|
|
CYTHON_NUMPY_COMPLEX_t = np.NPY_COMPLEX128
|
|
|
|
ELSE:
|
|
ctypedef float d
|
|
ctypedef float complex c
|
|
NUMPY_FLOAT_TYPE = np.float32
|
|
NUMPY_COMPLEX_TYPE = np.complex64
|
|
CYTHON_NUMPY_FLOAT_t = np.NPY_FLOAT32
|
|
CYTHON_NUMPY_COMPLEX_t = np.NPY_COMPLEX64
|
|
|
|
ctypedef size_t us
|
|
|
|
cdef extern from "lasp_tracer.h":
|
|
void setTracerLevel(int)
|
|
void TRACE(int,const char*)
|
|
void fsTRACE(int)
|
|
void feTRACE(int)
|
|
void clearScreen()
|
|
cdef extern from "lasp_mat.h":
|
|
ctypedef struct dmat:
|
|
us n_cols
|
|
us n_rows
|
|
d* _data
|
|
bint _foreign_data
|
|
ctypedef struct cmat:
|
|
pass
|
|
ctypedef cmat vc
|
|
ctypedef dmat vd
|
|
|
|
dmat dmat_foreign_data(us n_rows,
|
|
us n_cols,
|
|
d* data,
|
|
bint own_data)
|
|
cmat cmat_foreign_data(us n_rows,
|
|
us n_cols,
|
|
c* data,
|
|
bint own_data)
|
|
|
|
cmat cmat_alloc(us n_rows,us n_cols)
|
|
dmat dmat_alloc(us n_rows,us n_cols)
|
|
vd vd_foreign(const us size,d* data)
|
|
void vd_free(vd*)
|
|
|
|
void dmat_free(dmat*)
|
|
void cmat_free(cmat*)
|
|
void cmat_copy(cmat* to,cmat* from_)
|
|
|
|
cdef extern from "numpy/arrayobject.h":
|
|
void PyArray_ENABLEFLAGS(np.ndarray arr, int flags)
|
|
|
|
cdef extern from "lasp_python.h":
|
|
object dmat_to_ndarray(dmat*,bint transfer_ownership)
|
|
|