opensrdk_linear_algebra/
number.rs1pub use blas::c64;
2use std::{
3 fmt::Debug,
4 iter::Product,
5 iter::Sum,
6 ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign},
7};
8
9pub trait Number:
10 Clone
11 + Copy
12 + Debug
13 + Default
14 + PartialEq
15 + Send
16 + Sized
17 + Sync
18 + Add<Output = Self>
19 + AddAssign
20 + Sub<Output = Self>
21 + SubAssign
22 + Mul<Output = Self>
23 + MulAssign
24 + Div
25 + DivAssign
26 + Neg<Output = Self>
27 + Sum
28 + Product
29{
30 fn one() -> Self;
31}
32
33impl Number for f64 {
34 fn one() -> Self {
35 1.0
36 }
37}
38
39impl Number for c64 {
40 fn one() -> Self {
41 Self::new(1.0, 0.0)
42 }
43}