From b5bf7e12397190e685a6836a65811f263c4fce1c Mon Sep 17 00:00:00 2001 From: Alberto Mercurio Date: Mon, 17 Nov 2025 22:20:37 +0100 Subject: [PATCH] Avoid reset macro on AddedOperator update and caching --- src/basic.jl | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/basic.jl b/src/basic.jl index bfb21644..22af267b 100644 --- a/src/basic.jl +++ b/src/basic.jl @@ -571,13 +571,13 @@ function Base.resize!(L::AddedOperator, n::Integer) L end -function update_coefficients(L::AddedOperator, u, p, t) - ops = () - for op in L.ops - ops = (ops..., update_coefficients(op, u, p, t)) +@generated function update_coefficients(L::AddedOperator, u, p, t) + ops_types = L.parameters[2].parameters + N = length(ops_types) + quote + ops = Base.@ntuple $N i -> update_coefficients(L.ops[i], u, p, t) + return AddedOperator(ops) end - - @reset L.ops = ops end @generated function update_coefficients!(L::AddedOperator, u, p, t) @@ -607,10 +607,8 @@ has_adjoint(L::AddedOperator) = all(has_adjoint, L.ops) ops_types = L.parameters[2].parameters N = length(ops_types) quote - Base.@nexprs $N i->begin - @reset L.ops[i] = cache_operator(L.ops[i], v) - end - L + ops = Base.@ntuple $N i -> cache_operator(L.ops[i], v) + return AddedOperator(ops) end end