/** * * g++ main.cpp -o main.x -L`gsl-config --libs` * */ #include #include #include #include #include double f(double x, void * params) { return exp(-x*x); } int main (void) { size_t const n = 100; double const a = 19.3; double const b = 20.0; double const epsabs = 1.0e-13; double const epsrel = 1.0e-13; double result = 0.0; double abserr = 0.0; size_t nevals = 0; gsl_integration_cquad_workspace * workspace; gsl_function F; F.function = &f; F.params = NULL; workspace = gsl_integration_cquad_workspace_alloc(n); gsl_integration_cquad(&F, a, b, epsabs, epsrel, workspace, &result, &abserr, &nevals); fprintf(stderr, "result = %.12e\n", result); fprintf(stderr, "abserr = %.12e\n", abserr); fprintf(stderr, "nevals = %zu\n", nevals); gsl_integration_cquad_workspace_free(workspace); return 0; }