src/direct_product.rs

branch
dev
changeset 79
d63e40672dd6
parent 60
848ecc05becf
--- a/src/direct_product.rs	Sat Dec 21 14:27:14 2024 -0500
+++ b/src/direct_product.rs	Fri Dec 20 16:14:17 2024 -0500
@@ -279,28 +279,27 @@
     }
 }
 
-impl<F, A, B, U, V> AXPY<F, Pair<U, V>> for Pair<A, B>
+impl<F, A, B> AXPY for Pair<A, B>
 where
-    U : Space,
-    V : Space,
-    A : AXPY<F, U>,
-    B : AXPY<F, V>,
-    F : Num
+    A : AXPY<Field=F>,
+    B : AXPY<Field=F>,
+    F : Num + AXPY
 {
+    type Field = F;
 
-    fn axpy<I : Instance<Pair<U,V>>>(&mut self, α : F, x : I, β : F) {
+    fn axpy<I : Instance<Pair<A,B>>>(&mut self, α : F, x : I, β : F) {
         let Pair(u, v) = x.decompose();
         self.0.axpy(α, u, β);
         self.1.axpy(α, v, β);
     }
 
-    fn copy_from<I : Instance<Pair<U,V>>>(&mut self, x : I) {
+    fn copy_from<I : Instance<Pair<A,B>>>(&mut self, x : I) {
         let Pair(u, v) = x.decompose();
         self.0.copy_from(u);
         self.1.copy_from(v);
     }
 
-    fn scale_from<I : Instance<Pair<U,V>>>(&mut self, α : F, x : I) {
+    fn scale_from<I : Instance<Pair<A,B>>>(&mut self, α : F, x : I) {
         let Pair(u, v) = x.decompose();
         self.0.scale_from(α, u);
         self.1.scale_from(α, v);

mercurial