opensrdk_linear_algebra/
number.rs

1pub 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}