# HG changeset patch # User Tuomo Valkonen # Date 1747085330 18000 # Node ID 0a689881b0f1d353078fbcc04cd170e9b644c8b6 # Parent d2994e34a5f55ef3dde7ec7f0a72626652b21ae3 Add more AXPY super traits diff -r d2994e34a5f5 -r 0a689881b0f1 src/direct_product.rs --- a/src/direct_product.rs Mon May 12 15:42:48 2025 -0500 +++ b/src/direct_product.rs Mon May 12 16:28:50 2025 -0500 @@ -179,9 +179,7 @@ } impl_scalar!(Mul, mul); -//impl_scalar!(Mul, mul, f64); -impl_scalar!(Sub, sub); -//impl_scalar!(Sub, sub, f64); +impl_scalar!(Div, div); macro_rules! impl_scalar_lhs { ($trait:ident, $fn:ident, $F:ty) => { @@ -211,6 +209,8 @@ impl_scalar_lhs!(Mul, mul, f32); impl_scalar_lhs!(Mul, mul, f64); +impl_scalar_lhs!(Div, div, f32); +impl_scalar_lhs!(Div, div, f64); macro_rules! impl_binary_mut { ($trait:ident, $fn:ident) => { @@ -308,8 +308,8 @@ A: AXPY, B: AXPY, F: Num, - Self: MulAssign, - Pair: MulAssign, + Self: MulAssign + DivAssign, + Pair: MulAssign + DivAssign, //A::Owned: MulAssign, //B::Owned: MulAssign, //Pair: AXPY, Field = F>, diff -r d2994e34a5f5 -r 0a689881b0f1 src/linops.rs --- a/src/linops.rs Mon May 12 15:42:48 2025 -0500 +++ b/src/linops.rs Mon May 12 16:28:50 2025 -0500 @@ -11,7 +11,7 @@ use numeric_literals::replace_float_literals; use serde::Serialize; use std::marker::PhantomData; -use std::ops::Mul; +use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign}; /// Trait for linear operators on `X`. pub trait Linear: Mapping {} @@ -27,7 +27,21 @@ /// Efficient in-place summation. #[replace_float_literals(Self::Field::cast_from(literal))] -pub trait AXPY: Space + std::ops::MulAssign +pub trait AXPY: + Space + + MulAssign + + DivAssign + + AddAssign + + AddAssign + + SubAssign + + SubAssign + + Mul + + Div + + Add + + Add + + Sub + + Sub + + Neg where X: Space, { @@ -504,8 +518,6 @@ #[derive(Clone, Copy, Debug, Serialize, Eq, PartialEq)] pub struct RowOp(pub S, pub T); -use std::ops::Add; - impl Mapping> for RowOp where A: Space,