Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
49c4dff
Add cross-library 1D interpolation benchmark
ChrisRackauckas May 21, 2026
4abc69a
Drop the legacy linear_lookup / seems_linear / looks_linear machinery
ChrisRackauckas May 21, 2026
2357758
Refactor get_idx to dispatch through Auto(A.t_props)
ChrisRackauckas May 21, 2026
dcd7207
Fix O(n²) QuadraticSpline construction in spline_coefficients!
ChrisRackauckas May 21, 2026
9b21e37
Add `search_properties` constructor kwarg to all interpolation types
ChrisRackauckas May 21, 2026
ccef135
Add FastInterpolations.jl to cross-library bench + port their adverti…
ChrisRackauckas May 21, 2026
6a5f7e9
Update cross-library bench with FastInterpolations results + findings
ChrisRackauckas May 21, 2026
9889bf6
Cache concrete search strategy per interpolation for static dispatch
ChrisRackauckas May 21, 2026
cf6f254
Route LinearInterpolation knot search through FFF Auto + props
ChrisRackauckas May 23, 2026
fc2c45a
Add focused per-query bench comparing DI Auto vs FastInterpolations
ChrisRackauckas May 23, 2026
81b8b46
Allow FindFirstFunctions v3 in compat
ChrisRackauckas May 23, 2026
6036ef0
Mooncake: @zero_adjoint on searchsortedlast(::Auto, ...)
ChrisRackauckas May 23, 2026
c736b12
Require FindFirstFunctions v3
ChrisRackauckas May 23, 2026
ec233c6
LinearInterpolation: statically-dispatched uniform-grid fast path
ChrisRackauckas May 23, 2026
d4380e3
Uniform fast path: clamp before truncating, verify cell against live …
ChrisRackauckas Jun 10, 2026
210b8c8
Reuse the cached SearchProperties when resolving the search strategy
ChrisRackauckas Jun 10, 2026
7698d0a
Document v9 search changes in NEWS; drop stale looks_linear docs entry
ChrisRackauckas Jun 10, 2026
292ed0a
Restore Vector-knot constructor inference coverage; document search_p…
ChrisRackauckas Jun 10, 2026
d5dc0ba
Migrate to FFF v3's search_last/search_first (Base extensions removed)
ChrisRackauckas Jun 12, 2026
64f38e6
Follow FFF rename: search_last/search_first → searchsorted_last/searc…
ChrisRackauckas Jun 13, 2026
74b0b5a
get_idx: rename local strat → strategy (fix typos spell-check)
ChrisRackauckas Jun 14, 2026
8e65416
Collapse redundant strategy field: store kind::StrategyKind, not Auto{T}
ChrisRackauckas Jun 16, 2026
50195f8
Make LinearInterpolation fully inferred: uniformity is a runtime enum…
ChrisRackauckas Jun 19, 2026
f09c1b8
Add a static lean fast path for AbstractRange knots (1.8x on range A(q))
ChrisRackauckas Jun 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@

- The deprecated `RegularizationTools` extension and the `RegularizationSmooth` interpolation type have been removed. `RegularizationTools` was deprecated and capped `Optim` to `≤ 1`; removing it restores support for `Optim` v2.

- The `assume_linear_t` constructor keyword and the `DataInterpolations.looks_linear` utility have been removed. Knot-vector structure is now probed once at construction through `FindFirstFunctions.SearchProperties(t)` and cached on every interpolation as `A.t_props`; uniformly-spaced knots are detected exactly and automatically. To override the probe, pass the new `search_properties` keyword accepted by every constructor, e.g. `LinearInterpolation(u, t; search_properties = FindFirstFunctions.SearchProperties(t; is_uniform = true))`.

## New features

- Every interpolation constructor accepts a `search_properties::Union{Nothing, FindFirstFunctions.SearchProperties}` keyword. The default `nothing` probes `t` at construction; passing a pre-built `SearchProperties` skips the probe (useful when constructing many interpolations over the same knot vector).

- Knot search is dispatched through `FindFirstFunctions.Auto(t)` resolved at construction: uniformly-spaced knots (any `AbstractRange`, or vectors detected as exactly uniform) use a closed-form O(1) lookup; short non-uniform knot vectors use a linear scan; everything else keeps the previous bracketed gallop.

- `LinearInterpolation` with uniformly-spaced knots and floating-point values takes a statically-dispatched fast path (closed-form index + lerp, verified against the live knots) — 5-10x faster per query on uniform grids.

- `QuadraticSpline` construction is now O(n) instead of O(n^2) (running locator in `quadratic_spline_params`), e.g. ~870x faster at 100k points.

# DataInterpolations v5 Release Notes

## Breaking changes
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ BenchmarkTools = "1"
ChainRulesCore = "1.26.1"
EnumX = "1.0.5"
FillArrays = "1.16.0"
FindFirstFunctions = "2"
FindFirstFunctions = "3"
FiniteDifferences = "0.12.31"
ForwardDiff = "1"
LinearAlgebra = "1.10"
Expand Down
1 change: 1 addition & 0 deletions bench/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Manifest.toml
9 changes: 9 additions & 0 deletions bench/Project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[deps]
BasicInterpolators = "26cce99e-4866-4b6d-ab74-862489e035e0"
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
DataInterpolations = "82cc6244-b520-54b8-b5a6-8a565e85f1d0"
Dierckx = "39dd38d3-220a-591b-8e3c-4c3a8c710a94"
FastInterpolations = "9ea80cae-fc13-4c00-8066-6eaedb12f34b"
FindFirstFunctions = "64ca27bc-2ba2-4a57-88aa-44e436879224"
Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
PCHIPInterpolation = "afe20452-48d1-4729-9a8b-50fb251f06cd"
Loading
Loading