I have some trouble understanding why this would work.

`jac` points to a Fortran-order array, with strides `(sizeof(double), nrowpd*sizeof(double))`.
Specifying `jac(ipar, n)` makes f2py interpret the memory pointer as an array with strides `(sizeof(double), ipar*sizeof(double))`.
Do the values returned by the callback then end up in the correct locations?