src/operator_arithmetic.rs

branch
dev
changeset 137
d5dfcb6abcf5
parent 133
2b13f8a0c8ba
--- 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<I: Instance<Domain>>(&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<I: Instance<Domain>>(&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()
     }
 }

mercurial