From 4f3bd984d2dadf2bee667805cf7cb222a9875f69 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Fri, 17 Jan 2020 15:06:48 +0100 Subject: [PATCH] added simpler eval interface for uniform splines --- spline.hh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spline.hh b/spline.hh index 341152e..aeb86e5 100644 --- a/spline.hh +++ b/spline.hh @@ -113,6 +113,18 @@ struct CubicHermiteSpline : h00(t) * y[n-2] + h10(t) * central(y+n-2) + h01(t) * y[n-1] + h11(t) * left(y+n-1); } + static OTYPE eval(const OTYPE *y, ITYPE x, int n, ITYPE x0 = 0, ITYPE dx = 1) + { + ITYPE tx = (x - x0) / dx; + int k = tx; + ITYPE t = tx - ITYPE(k); + return k < 0 ? + eval(y, tx, 0, n) + : k < n-1 ? + eval(y, t, k, n) + : + eval(y, tx-ITYPE(n-2), n-2, n); + } }; }