// nabla.h del^2 = nabla = Laplacian n dimensional space of function U(r,a) // n-dimensional sphere, radius r // a[0],...,a[n-2] are angles in radians (User can rename in their code) // compute Laplacian of U(r,a[]) at given angles double nabla(int n, double r, double a[], double (*U)()); // alternate call if partial derivative values of U are known // da[0],...,da[n-2] are first partial derivatives of users U(r,a) // dda[0],...,dda[n-2] are second partial derivatives of users U(r,a) // with respect to a[0],...,a[d-2] evaluated // at a[0],...,a[d-1] double nablapd(int n, double r, double a[], double dr, double ddr, double da[], double dda[]); // utility function for n-dimensional cartesian to spherical coordinates // n>3 x[0..n-1] r, a[0..n-2] void toSpherical(int n, double x[], double *r, double a[]); // utility function for n-dimensional spherical to cartesian coordinates // n>3 r, a[0..n-2] x[0..n-1] void toCartesian(int n, double r, double a[], double x[]); // utility function for n-dimensional U(r, a) at r, a[] // to derivatives da[] and dda[] void sphereDeriv(int n, double (*U)(), double r, double a[], double *dr, double *ddr, double da[], double dda[]);