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 |
}
|