#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION #include <Python.h> #include <numpy/arrayobject.h> #include <stdio.h> void inc_array(PyArrayObject*, double); void not_inc_array(PyArrayObject*, double); double *getptr_to_pyarray_double(PyArrayObject*); double *getCarray_from_pymatrix_double(PyArrayObject*); void inc_array(PyArrayObject *arrayin, double inc){ double *c; int m, n; printf("from inc_array\n"); printf("dimensions: %d, type: %d\n", PyArray_NDIM(arrayin), PyArray_TYPE(arrayin)); m = PyArray_DIM(arrayin,0); n = PyArray_DIM(arrayin,1); c = getptr_to_pyarray_double(arrayin); for (int i=0; i<m*n; i++) c[i] += inc; } void not_inc_array(PyArrayObject *arrayin, double inc){ double *c; int m, n; printf("from not_inc_array\n"); printf("dimensions: %d, type: %d\n", PyArray_NDIM(arrayin), PyArray_TYPE(arrayin)); m = PyArray_DIM(arrayin,0); n = PyArray_DIM(arrayin,1); c = getCarray_from_pymatrix_double(arrayin); for (int i=0; i<m*n; i++) c[i] += inc; free(c); } double *getptr_to_pyarray_double(PyArrayObject *arrayin){ double *c; if (PyArray_TYPE(arrayin) != NPY_DOUBLE) { PyErr_SetString(PyExc_TypeError, "Array must be of type float64 (double)"); return NULL; } c = (double *)PyArray_DATA(arrayin); return c; } double *getCarray_from_pymatrix_double(PyArrayObject *arrayin){ int n, m; double *cin, *c; if (PyArray_TYPE(arrayin) != NPY_DOUBLE) { PyErr_SetString(PyExc_TypeError, "Array must be of type float64 (double)"); return NULL; } m = PyArray_DIM(arrayin,0); n = PyArray_DIM(arrayin,1); cin = getptr_to_pyarray_double(arrayin); c = (double *)malloc(sizeof(double)*n*m); for (int i=0; i<m*n; i++){ c[i] = cin[i]; } return c; }