From ec78668873ff30232de5bfc0d4269b62b37ceb7c Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Thu, 2 Apr 2026 14:06:06 -0400 Subject: [PATCH] fix `jacobian(_, AutoFiniteDiff(fdjtype=Val(:central)))` FiniteDiff requires `x1==x` for central mode autodiff. --- .../ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl b/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl index 82b769ef6..c01b53ece 100644 --- a/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl +++ b/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl @@ -346,9 +346,12 @@ function DI.prepare_jacobian_nokwarg( ) where {C} _sig = DI.signature(f, backend, x, contexts...; strict) fc = DI.fix_tail(f, map(DI.unwrap, contexts)...) - y = fc(x) - x1 = similar(x) - fx = similar(y) + x1 = if backend.fdjtype == Val(:Central) + copy(x) + else + similar(x) + end + fx = fc(x) fx1 = similar(y) cache = JacobianCache(x1, fx, fx1, fdjtype(backend)) relstep = if isnothing(backend.relstep)