diff --git a/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl b/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl index 82b769ef6..4a3712c0f 100644 --- a/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl +++ b/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/onearg.jl @@ -14,7 +14,7 @@ function DI.prepare_pushforward_nokwarg( _sig = DI.signature(f, backend, x, tx, contexts...; strict) fc = DI.fix_tail(f, map(DI.unwrap, contexts)...) y = fc(x) - cache = if x isa Number || y isa Number + cache = if x isa Number || y isa Number || (! DI.ismutable_array(x)) || (! DI.ismutable_array(y)) nothing else JVPCache(similar(x), y, fdtype(backend)) @@ -130,7 +130,7 @@ function DI.prepare_derivative_nokwarg( _sig = DI.signature(f, backend, x, contexts...; strict) fc = DI.fix_tail(f, map(DI.unwrap, contexts)...) y = fc(x) - cache = if y isa Number + cache = if y isa Number || (! DI.ismutable_array(y)) nothing elseif y isa AbstractArray df = similar(y) diff --git a/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/twoarg.jl b/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/twoarg.jl index e30ba1ec7..90c789f81 100644 --- a/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/twoarg.jl +++ b/DifferentiationInterface/ext/DifferentiationInterfaceFiniteDiffExt/twoarg.jl @@ -18,7 +18,7 @@ function DI.prepare_pushforward_nokwarg( contexts::Vararg{DI.Context, C} ) where {C} _sig = DI.signature(f!, y, backend, x, tx, contexts...; strict) - cache = if x isa Number + cache = if x isa Number || (! DI.ismutable_array(x)) nothing else JVPCache(similar(x), similar(y), fdtype(backend))