1use num_complex::Complex;
6
7pub trait Default {
8 fn one() -> Self;
9 fn zero() -> Self;
10 fn neg_one() -> Self;
11}
12
13macro_rules! default_impl(
14 ($t:ty, $ov:expr, $zv:expr) => {
15 impl Default for $t {
16 #[inline]
17 fn one() -> $t { $ov }
18 #[inline]
19 fn zero() -> $t { $zv }
20 #[inline]
21 fn neg_one() -> $t { -$ov }
22 }
23
24 impl Default for Complex<$t> {
25 #[inline]
26 fn one() -> Complex<$t> { Complex::new($ov, $zv) }
27 #[inline]
28 fn zero() -> Complex<$t> { Complex::new($zv, $zv) }
29 #[inline]
30 fn neg_one() -> Complex<$t> { Complex::new(-$ov, $zv) }
31 }
32 }
33);
34
35default_impl!(f32, 1f32, 0f32);
36default_impl!(f64, 1f64, 0f64);