--- a/src/direct_product.rs Mon May 12 16:28:50 2025 -0500 +++ b/src/direct_product.rs Mon May 12 19:30:41 2025 -0500 @@ -270,22 +270,20 @@ B: Euclidean<F>, //Pair<A, B>: Euclidean<F>, Self: Sized - + Mul<F, Output = Pair<A, B>> + + Mul<F, Output = <Self as AXPY>::Owned> + MulAssign<F> - + Div<F, Output = Pair<A, B>> + + Div<F, Output = <Self as AXPY>::Owned> + DivAssign<F> - + Add<Self, Output = Pair<A, B>> - + Sub<Self, Output = Pair<A, B>> - + for<'b> Add<&'b Self, Output = Pair<A, B>> - + for<'b> Sub<&'b Self, Output = Pair<A, B>> + + Add<Self, Output = <Self as AXPY>::Owned> + + Sub<Self, Output = <Self as AXPY>::Owned> + + for<'b> Add<&'b Self, Output = <Self as AXPY>::Owned> + + for<'b> Sub<&'b Self, Output = <Self as AXPY>::Owned> + AddAssign<Self> + for<'b> AddAssign<&'b Self> + SubAssign<Self> + for<'b> SubAssign<&'b Self> - + Neg<Output = Pair<A, B>>, + + Neg<Output = <Self as AXPY>::Owned>, { - type Output = Pair<A, B>; - fn dot<I: Instance<Self>>(&self, other: I) -> F { let Pair(u, v) = other.decompose(); self.0.dot(u) + self.1.dot(v)