Blame doc/examples/cheb.c

Packit 67cb25
#include <stdio.h>
Packit 67cb25
#include <gsl/gsl_math.h>
Packit 67cb25
#include <gsl/gsl_chebyshev.h>
Packit 67cb25
Packit 67cb25
double
Packit 67cb25
f (double x, void *p)
Packit 67cb25
{
Packit 67cb25
  (void)(p); /* avoid unused parameter warning */
Packit 67cb25
Packit 67cb25
  if (x < 0.5)
Packit 67cb25
    return 0.25;
Packit 67cb25
  else
Packit 67cb25
    return 0.75;
Packit 67cb25
}
Packit 67cb25
Packit 67cb25
int
Packit 67cb25
main (void)
Packit 67cb25
{
Packit 67cb25
  int i, n = 10000; 
Packit 67cb25
Packit 67cb25
  gsl_cheb_series *cs = gsl_cheb_alloc (40);
Packit 67cb25
Packit 67cb25
  gsl_function F;
Packit 67cb25
Packit 67cb25
  F.function = f;
Packit 67cb25
  F.params = 0;
Packit 67cb25
Packit 67cb25
  gsl_cheb_init (cs, &F, 0.0, 1.0);
Packit 67cb25
Packit 67cb25
  for (i = 0; i < n; i++)
Packit 67cb25
    {
Packit 67cb25
      double x = i / (double)n;
Packit 67cb25
      double r10 = gsl_cheb_eval_n (cs, 10, x);
Packit 67cb25
      double r40 = gsl_cheb_eval (cs, x);
Packit 67cb25
      printf ("%g %g %g %g\n", 
Packit 67cb25
              x, GSL_FN_EVAL (&F, x), r10, r40);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  gsl_cheb_free (cs);
Packit 67cb25
Packit 67cb25
  return 0;
Packit 67cb25
}