src/linops.rs

branch
dev
changeset 62
d8305c9b6fdf
parent 61
05089fbc0310
child 65
9327d544ca0b
--- a/src/linops.rs	Tue Dec 31 08:30:43 2024 -0500
+++ b/src/linops.rs	Sat Dec 21 23:32:20 2024 -0500
@@ -17,11 +17,13 @@
 
 /// Efficient in-place summation.
 #[replace_float_literals(F::cast_from(literal))]
-pub trait AXPY<F, X = Self> : Space
+pub trait AXPY<F, X = Self> : Space + std::ops::MulAssign<F>
 where
     F : Num,
     X : Space,
 {
+    type Owned : AXPY<F, X>;
+
     /// Computes  `y = βy + αx`, where `y` is `Self`.
     fn axpy<I : Instance<X>>(&mut self, α : F, x : I, β : F);
 
@@ -34,6 +36,12 @@
     fn scale_from<I : Instance<X>>(&mut self, α : F, x : I) {
         self.axpy(α, x, 0.0)
     }
+
+    /// Return a similar zero as `self`.
+    fn similar_origin(&self) -> Self::Owned;
+
+    /// Set self to zero.
+    fn set_zero(&mut self);
 }
 
 /// Efficient in-place application for [`Linear`] operators.

mercurial