| |
| |
|
|
| #include <numpy/arrayobject.h> |
| #include <numpy/ufuncobject.h> |
|
|
| |
| |
| |
| |
| #if NPY_API_VERSION >= 0x0000000e |
| #define __PYX_PYUFUNCGENERICFUNCTION_CAST(x) x |
| #else |
| #define __PYX_PYUFUNCGENERICFUNCTION_CAST(x) (PyUFuncGenericFunction)x |
| #endif |
|
|
| |
|
|
| #define __PYX_GET_NPY_COMPLEX_TYPE(tp) \ |
| sizeof(tp) == sizeof(npy_cfloat) ? NPY_CFLOAT : \ |
| sizeof(tp) == sizeof(npy_cdouble) ? NPY_CDOUBLE : \ |
| sizeof(tp) == sizeof(npy_clongdouble) ? NPY_CLONGDOUBLE : NPY_NOTYPE |
|
|
| #define __PYX_GET_NPY_FLOAT_TYPE(tp) \ |
| sizeof(tp) == sizeof(npy_float) ? NPY_FLOAT : \ |
| sizeof(tp) == sizeof(npy_double) ? NPY_DOUBLE : \ |
| sizeof(tp) == sizeof(npy_longdouble) ? NPY_LONGDOUBLE : NPY_NOTYPE |
|
|
| #define __PYX_GET_NPY_UINT_TYPE(tp) \ |
| sizeof(tp) == 1 ? NPY_UINT8 : \ |
| sizeof(tp) == 2 ? NPY_UINT16 : \ |
| sizeof(tp) == 4 ? NPY_UINT32 : \ |
| sizeof(tp) == 8 ? NPY_UINT64 : NPY_NOTYPE |
|
|
| #define __PYX_GET_NPY_SINT_TYPE(tp) \ |
| sizeof(tp) == 1 ? NPY_INT8 : \ |
| sizeof(tp) == 2 ? NPY_INT16 : \ |
| sizeof(tp) == 4 ? NPY_INT32 : \ |
| sizeof(tp) == 8 ? NPY_INT64 : NPY_NOTYPE |
|
|
| #define __PYX_GET_NPY_INT_TYPE(tp) ( \ |
| (((tp)-1) > (tp)0) ? \ |
| (__PYX_GET_NPY_UINT_TYPE(tp)) : \ |
| (__PYX_GET_NPY_SINT_TYPE(tp)) ) |
|
|
| |
| |
|
|
| enum { |
| |
| |
| |
| __Pyx_typedef_ufunc_{{type_substituted_cname}} = {{macro_name}}({{type_cname}}), |
|
|
| |
| |
| |
| |
| |
| __Pyx_typedef_ufunc_validation_{{type_substituted_cname}} = |
| 1 / (int)(__Pyx_typedef_ufunc_{{type_substituted_cname}} - NPY_NOTYPE) |
| }; |
|
|
| |
|
|
| |
| static PyUFuncGenericFunction* {{ufunc_funcs_name}}(void); |
| static char* {{ufunc_types_name}}(void); |
| static void* {{ufunc_data_name}}[] = {NULL}; |
|
|
| |
|
|
| static PyUFuncGenericFunction* {{ufunc_funcs_name}}(void) { |
| static PyUFuncGenericFunction arr[] = { |
| {{for loop, cname in looper(func_cnames)}} |
| __PYX_PYUFUNCGENERICFUNCTION_CAST(&{{cname}}){{if not loop.last}},{{endif}} |
| {{endfor}} |
| }; |
| return arr; |
| } |
|
|
| static char* {{ufunc_types_name}}(void) { |
| static char arr[] = { |
| {{for loop, tp in looper(type_constants)}} |
| {{tp}}{{if not loop.last}},{{endif}} |
| {{endfor}} |
| }; |
| return arr; |
| } |
|
|