1pub trait One: Sized { fn one() -> Self; }
2pub trait Zero: Sized { fn zero() -> Self; }
3pub trait Two: Sized { fn two() -> Self; }
4pub trait UnitX: Sized { fn unit_x() -> Self; }
5pub trait UnitY: Sized { fn unit_y() -> Self; }
6pub trait UnitZ: Sized { fn unit_z() -> Self; }
7pub trait UnitW: Sized { fn unit_w() -> Self; }
8pub trait OneHalf: Sized { fn onehalf() -> Self; }
9pub trait Pi: Sized { fn pi() -> Self; }
10pub trait Pi2: Sized { fn pi2() -> Self; }
11pub trait Pi4: Sized { fn pi4() -> Self; }
12pub trait Pi8: Sized { fn pi8() -> Self; }
13pub trait PiByC180: Sized { fn pi_by_c180() -> Self; }
14pub trait C180ByPi: Sized { fn c180_by_pi() -> Self; }
15pub trait Epsilon: Sized { fn epsilon() -> Self; }
16
17impl One for f32 { #[inline(always)] fn one() -> Self { 1.0_f32 } }
18impl Zero for f32 { #[inline(always)] fn zero() -> Self { 0.0_f32 } }
19impl Two for f32 { #[inline(always)] fn two() -> Self { 2.0_f32 } }
20impl OneHalf for f32 { #[inline(always)] fn onehalf() -> Self { 0.5_f32 } }
21impl Pi for f32 { #[inline(always)] fn pi() -> Self { 3.14159265359_f32 } }
22impl Pi2 for f32 { #[inline(always)] fn pi2() -> Self { Self::pi() * 2.0_f32 } }
23impl Pi4 for f32 { #[inline(always)] fn pi4() -> Self { Self::pi() * 4.0_f32 } }
24impl Pi8 for f32 { #[inline(always)] fn pi8() -> Self { Self::pi() * 8.0_f32 } }
25impl PiByC180 for f32 { #[inline(always)] fn pi_by_c180() -> Self { 3.14159265359_f32 / 180.0_f32 } }
26impl C180ByPi for f32 { #[inline(always)] fn c180_by_pi() -> Self { 180.0_f32 / 3.14159265359_f32 } }
27impl Epsilon for f32 { #[inline(always)] fn epsilon() -> Self { 0.00001_f32 } }
28
29impl One for f64 { #[inline(always)] fn one() -> Self { 1.0_f64 } }
30impl Zero for f64 { #[inline(always)] fn zero() -> Self { 0.0_f64 } }
31impl Two for f64 { #[inline(always)] fn two() -> Self { 2.0_f64 } }
32impl OneHalf for f64 { #[inline(always)] fn onehalf() -> Self { 0.5_f64 } }
33impl Pi for f64 { #[inline(always)] fn pi() -> Self { 3.141592653589793238462643383279502884197169399375105820974944592307816406286_f64 } }
34impl Pi2 for f64 { #[inline(always)] fn pi2() -> Self { Self::pi() * 2.0_f64 } }
35impl Pi4 for f64 { #[inline(always)] fn pi4() -> Self { Self::pi() * 4.0_f64 } }
36impl Pi8 for f64 { #[inline(always)] fn pi8() -> Self { Self::pi() * 8.0_f64 } }
37impl PiByC180 for f64 { #[inline(always)] fn pi_by_c180() -> Self { Self::pi() / 180.0_f64 } }
38impl C180ByPi for f64 { #[inline(always)] fn c180_by_pi() -> Self { 180.0_f64 / Self::pi() } }
39impl Epsilon for f64 { #[inline(always)] fn epsilon() -> Self { 0.00000001_f64 } }