Preparing to record mixed programming for NumPy and C + +
#include <boost/python.hpp> #include <numpy/ndarrayobject.h>namespace bp = boost::p ython;void reference_ Contiguous_array (pyobject* in, pyarrayobject* In_con, double* ptr, int& count) {In_con = Pyarray_getc Ontiguous ((pyarrayobject*) in); ptr = (double*) pyarray_data (In_con); int Num_dim = Pyarray_ndim (In_con); npy_intp* Pdim = Pyarray_dims (In_con); Count = 1; for (int i = 0; i < Num_dim; i++) {count *= pdim[i]; }}void dereference (pyobject* o) {py_decref (o);} pyobject* Entry_square_matrix (pyobject* input_matrix) {//Get the input array double* ptr; int count; pyarrayobject* Input_contigous_array; Reference_contiguous_array (Input_matrix, Input_contigous_array, PTR, count); Create the output array npy_intp dst_dim[1]; Dst_dim[0] = count; pyobject* Out_matrix = pyarray_simplenew (1, Dst_dim, Npy_float64); Double* ptr_out; pyarrayobject* Output_contigous_array; Reference_contiguous_arrAy (Out_matrix, Output_contigous_array, Ptr_out, Count); for (int i = 0; i < count; i++) {ptr_out[i] = ptr[i] * Ptr[i]; } dereference ((pyobject*) input_contigous_array); Dereference ((pyobject*) output_contigous_array); return Out_matrix;} Boost_python_module (_func) {Import_array (); BP::d EF (Square_matrix, Entry_square_matrix);}
Documenting mixed programming of numpy and C + +