Blame doc/examples/interpp.c

Packit 67cb25
#include <stdlib.h>
Packit 67cb25
#include <stdio.h>
Packit 67cb25
#include <math.h>
Packit 67cb25
#include <gsl/gsl_errno.h>
Packit 67cb25
#include <gsl/gsl_spline.h>
Packit 67cb25
Packit 67cb25
int
Packit 67cb25
main (void)
Packit 67cb25
{
Packit 67cb25
  int N = 4;
Packit 67cb25
  double x[4] = {0.00, 0.10,  0.27,  0.30};
Packit 67cb25
  double y[4] = {0.15, 0.70, -0.10,  0.15}; 
Packit 67cb25
             /* Note: y[0] == y[3] for periodic data */
Packit 67cb25
Packit 67cb25
  gsl_interp_accel *acc = gsl_interp_accel_alloc ();
Packit 67cb25
  const gsl_interp_type *t = gsl_interp_cspline_periodic; 
Packit 67cb25
  gsl_spline *spline = gsl_spline_alloc (t, N);
Packit 67cb25
Packit 67cb25
  int i; double xi, yi;
Packit 67cb25
Packit 67cb25
  printf ("#m=0,S=5\n");
Packit 67cb25
  for (i = 0; i < N; i++)
Packit 67cb25
    {
Packit 67cb25
      printf ("%g %g\n", x[i], y[i]);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  printf ("#m=1,S=0\n");
Packit 67cb25
  gsl_spline_init (spline, x, y, N);
Packit 67cb25
Packit 67cb25
  for (i = 0; i <= 100; i++)
Packit 67cb25
    {
Packit 67cb25
      xi = (1 - i / 100.0) * x[0] + (i / 100.0) * x[N-1];
Packit 67cb25
      yi = gsl_spline_eval (spline, xi, acc);
Packit 67cb25
      printf ("%g %g\n", xi, yi);
Packit 67cb25
    }
Packit 67cb25
  
Packit 67cb25
  gsl_spline_free (spline);
Packit 67cb25
  gsl_interp_accel_free (acc);
Packit 67cb25
  return 0;
Packit 67cb25
}