Skip to content

Numerical Recipes-inspired interpolating cubic splines - #89

Open
hjhornbeck wants to merge 3 commits into
spinkney:mainfrom
hjhornbeck:nr_splines
Open

Numerical Recipes-inspired interpolating cubic splines#89
hjhornbeck wants to merge 3 commits into
spinkney:mainfrom
hjhornbeck:nr_splines

Conversation

@hjhornbeck

Copy link
Copy Markdown

This code has proven invaluable to my work with Stan. Kharratzadeh's B-spline routines, while nice, didn't offer integrals. I also needed a way to control the slope at one end, and guarantee it passed through a specific point. As luck would have it, I had reconstructed Numerical Recipes' interpolating cubic spline code a few years earlier, which made it easy to analytically work out those integrals. It also had a built-in method for controlling the initial and terminal slope of the spline. I've added code to calculate the derivative (the second derivative is just linear interpolation, so there's no point).

In a deterministic context, this code can be quite a bit faster than Kharratzadeh's B-splines, as it has runtime $O(n)$ versus Kharratzadeh's $O(n^2)$. Unfortunately, it can behave poorly in the sampling loop, to the point that Kharratzadeh's may still wind up faster for very large $n$.

The license on this code is CC0, as a lot of it is just the raw math but tidied up to be a bit faster.

HJ Hornbeck added 3 commits June 23, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant