From 60830afbe6959c88710be5e6daec048ad66f6473 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Tue, 14 Jan 2020 09:53:47 +0100 Subject: [PATCH] added input and output type --- spline.hh | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/spline.hh b/spline.hh index c0be344..341152e 100644 --- a/spline.hh +++ b/spline.hh @@ -52,38 +52,38 @@ public: } }; -template +template struct CubicHermiteSpline { - static constexpr TYPE h00(TYPE t) + static constexpr ITYPE h00(ITYPE t) { - return (TYPE(1) + TYPE(2) * t) * (TYPE(1) - t) * (TYPE(1) - t); + return (ITYPE(1) + ITYPE(2) * t) * (ITYPE(1) - t) * (ITYPE(1) - t); } - static constexpr TYPE h10(TYPE t) + static constexpr ITYPE h10(ITYPE t) { - return t * (TYPE(1) - t) * (TYPE(1) - t); + return t * (ITYPE(1) - t) * (ITYPE(1) - t); } - static constexpr TYPE h01(TYPE t) + static constexpr ITYPE h01(ITYPE t) { - return t * t * (TYPE(3) - TYPE(2) * t); + return t * t * (ITYPE(3) - ITYPE(2) * t); } - static constexpr TYPE h11(TYPE t) + static constexpr ITYPE h11(ITYPE t) { - return t * t * (t - TYPE(1)); + return t * t * (t - ITYPE(1)); } - static constexpr TYPE left(const TYPE *x, const TYPE *y) + static constexpr OTYPE left(const ITYPE *x, const OTYPE *y) { return (y[0] - y[-1]) / (x[0] - x[-1]); } - static constexpr TYPE right(const TYPE *x, const TYPE *y) + static constexpr OTYPE right(const ITYPE *x, const OTYPE *y) { return (y[1] - y[0]) / (x[1] - x[0]); } - static constexpr TYPE central(const TYPE *x, const TYPE *y) + static constexpr OTYPE central(const ITYPE *x, const OTYPE *y) { - return TYPE(0.5) * (left(x, y) + right(x, y)); + return ITYPE(0.5) * (left(x, y) + right(x, y)); } - static constexpr TYPE eval(const TYPE *x, const TYPE *y, TYPE t, int k, int n) + static constexpr OTYPE eval(const ITYPE *x, const OTYPE *y, ITYPE t, int k, int n) { return k < 1 ? h00(t) * y[0] + h10(t) * (x[1]-x[0]) * right(x, y) + h01(t) * y[1] + h11(t) * (x[1]-x[0]) * central(x+1, y+1) @@ -92,19 +92,19 @@ struct CubicHermiteSpline : h00(t) * y[n-2] + h10(t) * (x[n-1]-x[n-2]) * central(x+n-2, y+n-2) + h01(t) * y[n-1] + h11(t) * (x[n-1]-x[n-2]) * left(x+n-1, y+n-1); } - static constexpr TYPE left(const TYPE *y) + static constexpr OTYPE left(const OTYPE *y) { return y[0] - y[-1]; } - static constexpr TYPE right(const TYPE *y) + static constexpr OTYPE right(const OTYPE *y) { return y[1] - y[0]; } - static constexpr TYPE central(const TYPE *y) + static constexpr OTYPE central(const OTYPE *y) { - return TYPE(0.5) * (y[1] - y[-1]); + return ITYPE(0.5) * (y[1] - y[-1]); } - static constexpr TYPE eval(const TYPE *y, TYPE t, int k, int n) + static constexpr OTYPE eval(const OTYPE *y, ITYPE t, int k, int n) { return k < 1 ? h00(t) * y[0] + h10(t) * right(y) + h01(t) * y[1] + h11(t) * central(y+1)