| 27 |
27 |
| 28 /// Efficient in-place summation. |
28 /// Efficient in-place summation. |
| 29 #[replace_float_literals(Self::Field::cast_from(literal))] |
29 #[replace_float_literals(Self::Field::cast_from(literal))] |
| 30 pub trait AXPY<X = Self>: |
30 pub trait AXPY<X = Self>: |
| 31 Space |
31 Space |
| 32 + MulAssign<Self::Field> |
32 //+ MulAssign<Self::Field> |
| 33 + DivAssign<Self::Field> |
33 //+ DivAssign<Self::Field> |
| 34 + AddAssign<Self> |
34 //+ AddAssign<Self> |
| 35 + AddAssign<Self::Owned> |
35 //+ AddAssign<Self::Owned> |
| 36 + SubAssign<Self> |
36 //+ SubAssign<Self> |
| 37 + SubAssign<Self::Owned> |
37 //+ SubAssign<Self::Owned> |
| 38 + Mul<Self::Field, Output = Self::Owned> |
38 + Mul<Self::Field, Output = Self::Owned> |
| 39 + Div<Self::Field, Output = Self::Owned> |
39 + Div<Self::Field, Output = Self::Owned> |
| 40 + Add<Self, Output = Self::Owned> |
40 + Add<Self, Output = Self::Owned> |
| 41 + Add<Self::Owned, Output = Self::Owned> |
41 + Add<Self::Owned, Output = Self::Owned> |
| 42 + Sub<Self, Output = Self::Owned> |
42 + Sub<Self, Output = Self::Owned> |
| 43 + Sub<Self::Owned, Output = Self::Owned> |
43 + Sub<Self::Owned, Output = Self::Owned> |
| 44 + Neg |
44 + Neg |
| 45 where |
45 where |
| 46 X: Space, |
46 X: Space, |
| 47 { |
47 { |
| 48 type Field: Num; |
48 type Field: Float; |
| 49 type Owned: AXPY<X, Field = Self::Field>; |
49 type Owned: AXPY<X, Field = Self::Field>; |
| 50 // type OriginGen<'a>: OriginGenerator<Self::Owned, F> |
50 // type OriginGen<'a>: OriginGenerator<Self::Owned, F> |
| 51 // where |
51 // where |
| 52 // Self: 'a; |
52 // Self: 'a; |
| 53 |
53 |