integrator/
constant.rs

1//! Various useful constants
2
3#[allow(clippy::excessive_precision)]
4pub mod precise {
5    /// Default epsilon used for comparisons
6    pub const EPSILON: f64 = 1e-6;
7
8    /// Pi π, 3.141592653589793238462643383279502884197169399375105820974944592...
9    pub const PI: f64 = 3.141592653589793238462643383279502884197169399375105820974944592;
10
11    /// e, Euler's Number, 2.718281828459045235360287471352662497757247093699959574966967627...
12    pub const E: f64 = 2.718281828459045235360287471352662497757247093699959574966967627;
13
14    /// Phi φ, The Golden Ratio, 1.618033988749894848204586834365638117720309179805762862135448623...
15    // constfn sqrt would allow this to be: (crate::Float::sqrt(5.0) + 1.0) / 2.0
16    pub const PHI: f64 = 1.618033988749894848204586834365638117720309179805762862135448623;
17
18    /// π / 180, Degrees to Radians, 0.017453292519943295769236907684886127134428718885417254560971914...
19    pub const DEG2RAD: f64 = PI / 180.0;
20
21    /// 1 / ( π / 180 ), Radians to Degrees, 57.29577951308232087679815481410517033240547246656432154916024386...
22    pub const RAD2DEG: f64 = 1.0 / DEG2RAD;
23
24    pub const MAX_INT: i64 = i64::MAX;
25}
26
27#[cfg(feature = "fixed_precision")]
28mod constants {
29    pub const EPSILON: crate::Float = crate::Float::from_const(super::precise::EPSILON);
30    pub const PI: crate::Float = crate::Float::from_const(super::precise::PI);
31    pub const E: crate::Float = crate::Float::from_const(super::precise::E);
32    pub const PHI: crate::Float = crate::Float::from_const(super::precise::PHI);
33    pub const DEG2RAD: crate::Float = crate::Float::from_const(super::precise::DEG2RAD);
34    pub const RAD2DEG: crate::Float = crate::Float::from_const(super::precise::RAD2DEG);
35}
36
37#[cfg(not(feature = "fixed_precision"))]
38mod constants {
39    pub const PI: crate::Float = super::precise::PI;
40    pub const E: crate::Float = super::precise::E;
41    pub const PHI: crate::Float = super::precise::PHI;
42    pub const DEG2RAD: crate::Float = super::precise::DEG2RAD;
43    pub const RAD2DEG: crate::Float = super::precise::RAD2DEG;
44}
45
46pub use constants::DEG2RAD;
47pub use constants::E;
48pub use constants::PHI;
49pub use constants::PI;
50pub use constants::RAD2DEG;