--- a/src/linops.rs Wed Sep 03 19:55:05 2025 -0500 +++ b/src/linops.rs Wed Sep 03 20:19:41 2025 -0500 @@ -616,7 +616,7 @@ type Codomain = Pair<S::Codomain, T::Codomain>; fn apply<I: Instance<A>>(&self, a: I) -> Self::Codomain { - Pair(a.eval_ref_decompose(|r| self.0.apply(r)), self.1.apply(a)) + Pair(a.eval_ref(|r| self.0.apply(r)), self.1.apply(a)) } } @@ -637,18 +637,18 @@ Self: Linear<X, Codomain = Pair<A, B>>, { fn gemv<I: Instance<X>>(&self, y: &mut Pair<A, B>, α: F, x: I, β: F) { - x.eval_ref_decompose(|r| self.0.gemv(&mut y.0, α, r, β)); + x.eval_ref(|r| self.0.gemv(&mut y.0, α, r, β)); self.1.gemv(&mut y.1, α, x, β); } fn apply_mut<I: Instance<X>>(&self, y: &mut Pair<A, B>, x: I) { - x.eval_ref_decompose(|r| self.0.apply_mut(&mut y.0, r)); + x.eval_ref(|r| self.0.apply_mut(&mut y.0, r)); self.1.apply_mut(&mut y.1, x); } /// Computes `y += Ax`, where `A` is `Self` fn apply_add<I: Instance<X>>(&self, y: &mut Pair<A, B>, x: I) { - x.eval_ref_decompose(|r| self.0.apply_add(&mut y.0, r)); + x.eval_ref(|r| self.0.apply_add(&mut y.0, r)); self.1.apply_add(&mut y.1, x); } }