diff -r 22fd33834ab7 -r d5dfcb6abcf5 src/operator_arithmetic.rs --- a/src/operator_arithmetic.rs Mon May 12 21:56:42 2025 -0500 +++ b/src/operator_arithmetic.rs Mon May 12 22:48:16 2025 -0500 @@ -2,7 +2,7 @@ Arithmetic of [`Mapping`]s. */ -use crate::instance::{Instance, Space}; +use crate::instance::{Instance, Instantiated, Space}; use crate::mapping::{DifferentiableImpl, DifferentiableMapping, Mapping}; use crate::types::*; use serde::Serialize; @@ -99,7 +99,9 @@ type Codomain = M::Codomain; fn apply>(&self, x: I) -> Self::Codomain { - x.eval_ref_decompose(|xr| self.0.iter().map(|c| c.apply(xr)).sum()) + let xi = x.instantiate(); + let xr = xi.ref_inst(); + self.0.iter().map(|c| c.apply(xr)).sum() } } @@ -112,6 +114,9 @@ type Derivative = M::DerivativeDomain; fn differential_impl>(&self, x: I) -> Self::Derivative { - x.eval_ref_decompose(|xr| self.0.iter().map(|c| c.differential(xr)).sum()) + let xi = x.instantiate(); + let xr = xi.ref_inst(); + + self.0.iter().map(|c| c.differential(xr)).sum() } }