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