![]() | Macros can greatly simplify indexing:
#define IND1(a, i) *((double *)(a->data + i*a->strides[0])) #define IND2(a, i, j) \ *((double *)(a->data + i*a->strides[0] + j*a->strides[1])) |
![]() | Application:
for (i = 0; i < nx; i++) { for (j = 0; j < ny; j++) { arglist = Py_BuildValue("(dd)", IND1(xcoor,i), IND1(ycoor,j)); result = PyEval_CallObject(func1, arglist); Py_DECREF(arglist); if (result == NULL) return NULL; /* exception in func1 */ IND2(a,i,j) = PyFloat_AS_DOUBLE(result); Py_DECREF(result); } } |