Migrating to v0.4
v0.4.0 has two breaking changes. Both produce compile-time or runtime errors, so your test suite will catch them.
1. Series() Wrapper
Multi-series input now requires the Series(...) wrapper. Bare Matrix and Vector{Vector} dispatch has been removed to avoid ambiguity with the new custom value type support.
| v0.3 (removed) | v0.4 |
|---|---|
cubic_interp(x, [y1, y2]) | cubic_interp(x, Series(y1, y2)) |
cubic_interp(x, Y_matrix) | cubic_interp(x, Series(Y_matrix)) |
linear_interp(x, [y1, y2]) | linear_interp(x, Series(y1, y2)) |
All input forms are supported:
Series(y1, y2, y3) # varargs
Series([y1, y2]) # vector of vectors
Series(hcat(y1, y2)) # matrix (columns = series)2. PeriodicBC() Strict Endpoint Check
The default :inclusive mode now requires y[1] == y[end] (exact equality) instead of isapprox. This catches silent data errors from floating-point arithmetic:
t = range(0, 2π, 101)
y = sin.(t)
# sin(2π) ≈ -2.4e-16, NOT exactly 0.0
cubic_interp(t, y; bc=PeriodicBC())
# ERROR: y[1] != y[end] for inclusive PeriodicBCFix by explicitly ensuring the endpoint matches:
y[end] = y[1] # force exact equality
cubic_interp(t, y; bc=PeriodicBC()) # worksAlternatively, use :exclusive mode if your data does not include the repeated endpoint:
t = range(0, 2π, 101)[1:end-1] # exclude last point
y = sin.(t)
cubic_interp(t, y; bc=PeriodicBC(:exclusive))