From 4e53a054b0015460dc500f23aa66fd576490188f Mon Sep 17 00:00:00 2001 From: ThummeTo <83663542+ThummeTo@users.noreply.github.com> Date: Fri, 24 Nov 2023 14:41:20 +0100 Subject: [PATCH] added setindex! for AD primitives (#59) --- Project.toml | 4 ++-- src/extensions/FMISensitivity.jl | 9 +++++++++ src/sense.jl | 5 +++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index b1f220e..afe9065 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "FMICore" uuid = "8af89139-c281-408e-bce2-3005eb87462f" authors = ["TT ", "LM ", "JK "] -version = "0.19.1" +version = "0.19.2" [deps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" @@ -9,7 +9,7 @@ Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" Requires = "ae029012-a4dd-5104-9daa-d747884805df" [compat] -ChainRulesCore = "1.16.0" +ChainRulesCore = "1.16.0 - 1.18" Dates = "1" Requires = "1.3.0" julia = "1.6" diff --git a/src/extensions/FMISensitivity.jl b/src/extensions/FMISensitivity.jl index ed81697..f9e1f12 100644 --- a/src/extensions/FMISensitivity.jl +++ b/src/extensions/FMISensitivity.jl @@ -54,3 +54,12 @@ function unsense(e::ForwardDiff.Dual) return ForwardDiff.value(e) end +# set sensitive primitives (this is intentionally NO additional dispatch for `setindex!`) +function sense_setindex!(A::Vector{Float64}, x::ForwardDiff.Dual, i::Int64) + return setindex!(A, undual(x), i) +end + +function sense_setindex!(A::Vector{Float64}, x::ReverseDiff.TrackedReal, i::Int64) + return setindex!(A, untrack(x), i) +end + diff --git a/src/sense.jl b/src/sense.jl index f699ea8..b50a816 100644 --- a/src/sense.jl +++ b/src/sense.jl @@ -82,3 +82,8 @@ end function unsense(e) return e end + +# set sensitive primitives (this is intentionally NO additional dispatch for `setindex!`) +function sense_setindex!(A, x, i) + return setindex!(A, x, i) +end