Blame doc/examples/diff.c
|
Packit |
67cb25 |
#include <stdio.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_math.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_deriv.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double f (double x, void * params)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
(void)(params); /* avoid unused parameter warning */
|
|
Packit |
67cb25 |
return pow (x, 1.5);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
main (void)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
gsl_function F;
|
|
Packit |
67cb25 |
double result, abserr;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
F.function = &f;
|
|
Packit |
67cb25 |
F.params = 0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
printf ("f(x) = x^(3/2)\n");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_deriv_central (&F, 2.0, 1e-8, &result, &abserr);
|
|
Packit |
67cb25 |
printf ("x = 2.0\n");
|
|
Packit |
67cb25 |
printf ("f'(x) = %.10f +/- %.10f\n", result, abserr);
|
|
Packit |
67cb25 |
printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0));
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_deriv_forward (&F, 0.0, 1e-8, &result, &abserr);
|
|
Packit |
67cb25 |
printf ("x = 0.0\n");
|
|
Packit |
67cb25 |
printf ("f'(x) = %.10f +/- %.10f\n", result, abserr);
|
|
Packit |
67cb25 |
printf ("exact = %.10f\n", 0.0);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
return 0;
|
|
Packit |
67cb25 |
}
|