Here's a MWE:
using Interpolations
using ForwardDiff
x = Float64[-3000, -2500, -2000, -1500, -1250, -1000, -900, -700, -500, -450, -370, -300, -250, -215, -200, -170, -160, -140, -100, -70, -50, -38, -35, -30, -25, -20, -15, -10, -5, 0]
y = randn(length(x))
f = linear_interpolation(x, y; extrapolation_bc=Flat())
ForwardDiff.derivative(f, 0.0)
Under normal REPL conditions, this will return:
but when run with julia --check-bounds yes, this will throw:
ERROR: BoundsError: attempt to access 30-element interpolate((::Vector{Float64},), ::Vector{Float64}, Gridded(Linear())) with element type Float64 at index [Dual{ForwardDiff.Tag{Interpolations.Extrapolation{Float64, 1, Interpolations.GriddedInterpolation{Float64, 1, Vector{Float64}, Gridded{Linear{Throw{OnGrid}}}, Tuple{Vector{Float64}}}, Gridded{Linear{Throw{OnGrid}}}, Flat{Nothing}}, Float64}}(0.0,1.0)]
Stacktrace:
[1] throw_boundserror(A::Interpolations.GriddedInterpolation{…}, I::Tuple{…})
@ Base ./essentials.jl:15
[2] GriddedInterpolation
@ ~/.julia/packages/Interpolations/dR5oF/src/gridded/indexing.jl:3 [inlined]
[3] Extrapolation
@ ~/.julia/packages/Interpolations/dR5oF/src/extrapolation/extrapolation.jl:54 [inlined]
[4] derivative(f::Interpolations.Extrapolation{…}, x::Float64)
@ ForwardDiff ~/.julia/packages/ForwardDiff/z3jRk/src/derivative.jl:14
Here's a MWE:
Under normal REPL conditions, this will return:
but when run with
julia --check-bounds yes, this will throw: