1 macro_rules! impl_float_consts {
2     ([$elem_ty:ident; $elem_count:expr]: $id:ident) => {
3         impl $id {
4             /// Machine epsilon value.
5             pub const EPSILON: $id = $id::splat(core::$elem_ty::EPSILON);
6 
7             /// Smallest finite value.
8             pub const MIN: $id = $id::splat(core::$elem_ty::MIN);
9 
10             /// Smallest positive normal value.
11             pub const MIN_POSITIVE: $id =
12                 $id::splat(core::$elem_ty::MIN_POSITIVE);
13 
14             /// Largest finite value.
15             pub const MAX: $id = $id::splat(core::$elem_ty::MAX);
16 
17             /// Not a Number (NaN).
18             pub const NAN: $id = $id::splat(core::$elem_ty::NAN);
19 
20             /// Infinity (∞).
21             pub const INFINITY: $id = $id::splat(core::$elem_ty::INFINITY);
22 
23             /// Negative infinity (-∞).
24             pub const NEG_INFINITY: $id =
25                 $id::splat(core::$elem_ty::NEG_INFINITY);
26 
27             /// Archimedes' constant (π)
28             pub const PI: $id = $id::splat(core::$elem_ty::consts::PI);
29 
30             /// π/2
31             pub const FRAC_PI_2: $id =
32                 $id::splat(core::$elem_ty::consts::FRAC_PI_2);
33 
34             /// π/3
35             pub const FRAC_PI_3: $id =
36                 $id::splat(core::$elem_ty::consts::FRAC_PI_3);
37 
38             /// π/4
39             pub const FRAC_PI_4: $id =
40                 $id::splat(core::$elem_ty::consts::FRAC_PI_4);
41 
42             /// π/6
43             pub const FRAC_PI_6: $id =
44                 $id::splat(core::$elem_ty::consts::FRAC_PI_6);
45 
46             /// π/8
47             pub const FRAC_PI_8: $id =
48                 $id::splat(core::$elem_ty::consts::FRAC_PI_8);
49 
50             /// 1/π
51             pub const FRAC_1_PI: $id =
52                 $id::splat(core::$elem_ty::consts::FRAC_1_PI);
53 
54             /// 2/π
55             pub const FRAC_2_PI: $id =
56                 $id::splat(core::$elem_ty::consts::FRAC_2_PI);
57 
58             /// 2/sqrt(π)
59             pub const FRAC_2_SQRT_PI: $id =
60                 $id::splat(core::$elem_ty::consts::FRAC_2_SQRT_PI);
61 
62             /// sqrt(2)
63             pub const SQRT_2: $id = $id::splat(core::$elem_ty::consts::SQRT_2);
64 
65             /// 1/sqrt(2)
66             pub const FRAC_1_SQRT_2: $id =
67                 $id::splat(core::$elem_ty::consts::FRAC_1_SQRT_2);
68 
69             /// Euler's number (e)
70             pub const E: $id = $id::splat(core::$elem_ty::consts::E);
71 
72             /// log<sub>2</sub>(e)
73             pub const LOG2_E: $id = $id::splat(core::$elem_ty::consts::LOG2_E);
74 
75             /// log<sub>10</sub>(e)
76             pub const LOG10_E: $id =
77                 $id::splat(core::$elem_ty::consts::LOG10_E);
78 
79             /// ln(2)
80             pub const LN_2: $id = $id::splat(core::$elem_ty::consts::LN_2);
81 
82             /// ln(10)
83             pub const LN_10: $id = $id::splat(core::$elem_ty::consts::LN_10);
84         }
85     };
86 }
87