Feature matrix

What each package does today

Both packages implement the same method: convolution interpolation with the same kernels, the same boundary conditions and the same derivative and integral operators, so a result computed in one language is reproducible in the other. ConvolutionInterpolations.jl is the reference implementation; convinterp is a port with a Rust core, tested against the Julia package to the last bit of the boundary coefficients. The port is younger, and the rows below say exactly how far it has come.

Capability Julia Python Concept page
Interpolation on uniform grids, any dimension ✓ ✓ Interpolation and kernels
Kernels a0…a7, b5…b13 ✓ ✓ Interpolation and kernels
Boundary conditions poly, detect, linear, quadratic ✓ ✓ Boundaries
Extrapolation beyond the data (throw, flat, line, natural) ✓ — Boundaries
Derivatives, per axis, up to the kernel’s range ✓ ✓ Derivatives
Integrals, any order, per axis, mixed with derivatives ✓ ✓ Integrals
Nonuniform grids (n3, b5…b13) ✓ — Nonuniform grids
Per-axis kernels and mixed uniform/nonuniform axes ✓ — Nonuniform grids
Gaussian smoothing (convolution_smooth, convolution_gaussian) ✓ — Smoothing
Grid-to-grid resampling (convolution_resample) ✓ — Interpolation and kernels
Scattered data, exact and smoothing fits (fit_scattered) ✓ — Scattered data
Adaptive and user-supplied knot grids for scattered data ✓ — Scattered data
Lazy construction for large grids and high dimensions ✓ — Interpolation and kernels
Float32, BigFloat and other element types ✓ — Interpolation and kernels
Zero-allocation evaluation ✓ ✓ Benchmarks

Reading the matrix

  • A ✓ in both columns means the same call with the same arguments gives the same numbers, up to floating-point rounding, in both languages; the concept pages show the two side by side.
  • A ✓ in the Julia column only means the feature exists in the reference implementation and is not yet ported. The concept page documents it with Julia code and says so at the top.
  • The port’s Rust core evaluates in f64 only. Extended and reduced precision are a Julia feature, since the kernels are stored as exact rationals and the Julia code is written generically over the element type.

What the port will get next

The order follows the Julia package’s own history: extrapolation beyond the data, nonuniform grids, then smoothing and resampling, then scattered data. Each row moves to ✓ in the release notes of the version that ships it, and this page is updated with the release.