File indexing completed on 2024-05-12 15:27:08
0001 /*************************************************************************** 0002 File : nsl_interp.h 0003 Project : LabPlot 0004 Description : NSL interpolation functions 0005 -------------------------------------------------------------------- 0006 Copyright : (C) 2016 by Stefan Gerlach (stefan.gerlach@uni.kn) 0007 0008 ***************************************************************************/ 0009 0010 /*************************************************************************** 0011 * * 0012 * This program is free software; you can redistribute it and/or modify * 0013 * it under the terms of the GNU General Public License as published by * 0014 * the Free Software Foundation; either version 2 of the License, or * 0015 * (at your option) any later version. * 0016 * * 0017 * This program is distributed in the hope that it will be useful, * 0018 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0020 * GNU General Public License for more details. * 0021 * * 0022 * You should have received a copy of the GNU General Public License * 0023 * along with this program; if not, write to the Free Software * 0024 * Foundation, Inc., 51 Franklin Street, Fifth Floor, * 0025 * Boston, MA 02110-1301 USA * 0026 * * 0027 ***************************************************************************/ 0028 0029 #ifndef NSL_INTERP_H 0030 #define NSL_INTERP_H 0031 0032 #define NSL_INTERP_TYPE_COUNT 11 0033 typedef enum {nsl_interp_type_linear, nsl_interp_type_polynomial, nsl_interp_type_cspline, nsl_interp_type_cspline_periodic, 0034 nsl_interp_type_akima, nsl_interp_type_akima_periodic, nsl_interp_type_steffen, nsl_interp_type_cosine, 0035 nsl_interp_type_exponential, nsl_interp_type_pch, nsl_interp_type_rational} nsl_interp_type; 0036 extern const char* nsl_interp_type_name[]; 0037 0038 #define NSL_INTERP_PCH_VARIANT_COUNT 4 0039 typedef enum {nsl_interp_pch_variant_finite_difference, nsl_interp_pch_variant_catmull_rom, nsl_interp_pch_variant_cardinal, 0040 nsl_interp_pch_variant_kochanek_bartels} nsl_interp_pch_variant; 0041 extern const char* nsl_interp_pch_variant_name[]; 0042 0043 #define NSL_INTERP_EVALUATE_COUNT 4 0044 typedef enum {nsl_interp_evaluate_function, nsl_interp_evaluate_derivative, nsl_interp_evaluate_second_derivative, 0045 nsl_interp_evaluate_integral} nsl_interp_evaluate; 0046 extern const char* nsl_interp_evaluate_name[]; 0047 0048 /* calculates rational interpolation of n points of xy-data at xn using Burlisch-Stoer method. result in v (error dv) */ 0049 int nsl_interp_ratint(double *x, double *y, int n, double xn, double *v, double *dv); 0050 0051 #endif /* NSL_INTERP_H */