32bspline(
int i, T x) -> std::enable_if_t<(order > 0) && (order <= 7), T> {
50 return T(0.5) *
sqr(T(0.5) - x);
52 return T(0.75) -
sqr(x);
54 return T(0.5) *
sqr(T(0.5) + x);
59 return (T(1.) + x * (T(-6.) + x * (T(12.) - x * T(8.)))) / T(48.);
61 return (T(23.) + x * (T(-30.) + x * (T(-12.) + x * T(24.)))) / T(48.);
63 return (T(23.) + x * (T(30.) + x * (T(-12.) - x * T(24.)))) / T(48.);
65 return (T(1.) + x * (T(6.) + x * (T(12.) + x * T(8.)))) / T(48.);
71 x * (T(-8.) + x * (T(24.) + x * (T(-32.) + x * T(16.))))) /
75 x * (T(-44.) + x * (T(24.) + x * (T(16.) - x * T(16.))))) /
78 return (T(115.) + x * x * (T(-120.) + x * x * T(48.))) / T(192.);
81 x * (T(44.) + x * (T(24.) + x * (T(-16.) - x * T(16.))))) /
84 return (T(1.) + x * (T(8.) + x * (T(24.) + x * (T(32.) + x * T(16.))))) /
92 x * (T(40.) + x * (T(-80.) + x * (T(80.) - x * T(32.)))))) /
98 x * (T(-240.) + x * (T(-240.) + x * T(160.)))))) /
104 x * (T(560.) + x * (T(80.) - x * T(160.)))))) /
110 x * (T(-560.) + x * (T(80.) + x * T(160.)))))) /
116 x * (T(240.) + x * (T(-240.) - x * T(160.)))))) /
121 x * (T(40.) + x * (T(80.) + x * (T(80.) + x * T(32.)))))) /
131 x * (T(240.) + x * (T(-192.) + x * T(64.))))))) /
138 x * (T(240.) + x * (T(384.) - x * T(192.))))))) /
144 x * (T(6880.) + x * (T(-4080.) +
145 x * (T(-960.) + x * T(960.))))))) /
149 x * x * (T(-4620.) + x * x * (T(1680.) - x * x * T(320.)))) /
156 x * (T(-4080.) + x * (T(960.) + x * T(960.))))))) /
163 x * (T(240.) + x * (T(-384.) - x * T(192.))))))) /
170 x * (T(240.) + x * (T(192.) + x * T(64.))))))) /
175 DEVICE_THROW(std::runtime_error(
"Internal interpolation error."));
210bspline_d(
int i, T x) -> std::enable_if_t<(order > 0) && (order <= 7), T> {
237 return (T(-1.) + x * (T(4.) + x * T(-4.))) / T(8.);
239 return (T(-5.) + x * (T(-4.) + x * T(12.))) / T(8.);
241 return (T(5.) + x * (T(-4.) + x * T(-12.))) / T(8.);
243 return (T(1.) + x * (T(4.) + x * T(4.))) / T(8.);
248 return (T(-1.) + x * (T(6.) + x * (T(-12.) + x * T(8.)))) / T(48.);
250 return (T(-11.) + x * (T(12.) + x * (T(12.) + x * T(-16.)))) / T(24.);
252 return (x * (T(-5.) + x * x * T(4.))) / T(4.);
254 return (T(11.) + x * (T(12.) + x * (T(-12.) + x * T(-16.)))) / T(24.);
256 return (T(1.) + x * (T(6.) + x * (T(12.) + x * T(8.)))) / T(48.);
262 x * (T(8.) + x * (T(-24.) + x * (T(32.) + x * T(-16.))))) /
266 x * (T(168.) + x * (T(-72.) + x * (T(-96.) + x * (T(80.)))))) /
270 x * (T(-88.) + x * (T(168.) + x * (T(32.) + x * T(-80.))))) /
274 x * (T(-88.) + x * (T(-168.) + x * (T(32.) + x * T(80.))))) /
278 x * (T(168.) + x * (T(72.) + x * (T(-96.) + x * T(-80.))))) /
281 return (T(1.) + x * (T(8.) + x * (T(24.) + x * (T(32.) + x * T(16.))))) /
289 x * (T(-40.) + x * (T(80.) + x * (T(-80.) + x * T(32.)))))) /
294 x * (T(-200.) + x * (T(40.) + x * (T(80.) - x * T(48.)))))) /
300 x * (T(-272.) + x * (T(-80.) + x * T(96.)))))) /
303 return (x * (T(-77.) + x * x * (T(56.) - x * x * T(16.)))) / T(96.);
305 return (T(289.) + x * (T(158.) + x * (T(-344.) +
307 x * (T(80.) + x * T(96.)))))) /
312 x * (T(200.) + x * (T(40.) + x * (T(-80.) - x * T(48.)))))) /
317 x * (T(40.) + x * (T(80.) + x * (T(80.) + x * T(32.)))))) /
322 DEVICE_THROW(std::runtime_error(
"Internal interpolation error."));