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
}