#define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a)) double zbrent(double (*func)(double), double x1, double x2, double tol);