#include "Python.h" #include "arrayobject.h" #include #define IDATA(p) ((int *) (((PyArrayObject *)p)->data)) #define DDATA(p) ((double *) (((PyArrayObject *)p)->data)) static PyObject *py_cdistance(PyObject *self, PyObject *args); static PyObject *py_cCalcESEnergy(PyObject *self, PyObject *args); double c_distance_function(double xi,double yi,double zi, double xj,double yj,double zj); double c_calc_ES_Energy(int n, int *q, double *x, double *y, double *z); static PyObject *py_cCalcESEnergy(PyObject *self, PyObject *args){ int n,ok; PyObject *xarray, *yarray, *zarray, *qarray; int *q; double *x, *y, *z; double energy; ok = PyArg_ParseTuple(args,"iOOOO",&n,&qarray,&xarray,&yarray,&zarray); if (!ok){ fprintf(stderr,"Error (cCalcESEnergy) in parsing arguments\n"); exit(1); } q = IDATA(qarray); x = DDATA(xarray); y = DDATA(yarray); z = DDATA(zarray); energy = c_calc_ES_Energy(n,q,x,y,z); return Py_BuildValue("d",energy); } double c_calc_ES_Energy(int n, int *q, double *x, double *y, double *z){ int i,j; double energy = 0.; double xi,yi,zi,xj,yj,zj; int qi,qj; for (i=0; i