Chris@0: /* Chris@0: copyright (C) 2012 I. Irigaray, M. Rocamora Chris@0: Chris@0: This program is free software: you can redistribute it and/or modify Chris@0: it under the terms of the GNU General Public License as published by Chris@0: the Free Software Foundation, either version 3 of the License, or Chris@0: (at your option) any later version. Chris@0: Chris@0: This program is distributed in the hope that it will be useful, Chris@0: but WITHOUT ANY WARRANTY; without even the implied warranty of Chris@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Chris@0: GNU General Public License for more details. Chris@0: Chris@0: You should have received a copy of the GNU General Public License Chris@0: along with this program. If not, see . Chris@0: */ Chris@0: Chris@0: Chris@0: #include "FChTransformUtils.h" Chris@0: #include Chris@0: Chris@0: void cumtrapz(const double *x, const double *y, size_t N, double *accum) Chris@0: /*Trapezoidal Integrator: 1/2(b-a)(F(a)+F(b))*/ Chris@0: { Chris@0: Chris@0: accum[0]=0.0; Chris@0: for (size_t i = 1; i < N; i++) { Chris@0: accum[i]=accum[i-1]+0.5*(x[i]-x[i-1])*(y[i]+y[i-1]); Chris@0: } Chris@0: Chris@0: } Chris@0: Chris@0: Chris@0: void interp1(const double *x1, const double *y1, size_t N1, const double *x2, double *y2, size_t N2){ Chris@0: /*1-D linear interpolation*/ Chris@0: Chris@0: for (size_t i = 0; i < N2; i++) { Chris@0: /*Smaller or equal than the smallest, or larger or equal than the largest.*/ Chris@0: if ( x2[i] <= x1[0] ) { Chris@0: y2[i] = y1[0]; Chris@0: } else if ( x2[i] >= x1[N1-1] ) { Chris@0: y2[i] = y1[N1-1]; Chris@0: } else { Chris@0: /*Search every value of x2 in x1*/ Chris@0: size_t j = 1; Chris@0: size_t salir = 0; Chris@0: while ((j