#![allow(clippy::excessive_precision, reason = "using constants with many decimals")]
use crate::_FloatInternals;
#[cfg(nightly_float)]
use ::core::{f16, f128};
#[doc = crate::_tags!(num namespace)] #[doc = crate::_doc_location!("num/dom/real")]
#[rustfmt::skip]
pub trait FloatConst: Sized {
#[doc = crate::_FLOAT_CONST_ONE!()] const ONE: Self;
#[doc = crate::_FLOAT_CONST_ZERO!()] const ZERO: Self;
#[doc = crate::_FLOAT_CONST_NEG_ONE!()] const NEG_ONE: Self;
#[doc = crate::_FLOAT_CONST_NEG_ZERO!()] const NEG_ZERO: Self;
#[doc = crate::_FLOAT_CONST_NAN!()] const NAN: Self;
#[doc = crate::_FLOAT_CONST_INFINITY!()] const INFINITY: Self;
#[doc = crate::_FLOAT_CONST_NEG_INFINITY!()] const NEG_INFINITY: Self;
#[doc = crate::_FLOAT_CONST_MIN!()] const MIN: Self;
#[doc = crate::_FLOAT_CONST_MIN_POSITIVE!()] const MIN_POSITIVE: Self;
#[doc = crate::_FLOAT_CONST_MAX!()] const MAX: Self;
#[doc = crate::_FLOAT_CONST_MIN_EXP!()] const MIN_EXP: i32;
#[doc = crate::_FLOAT_CONST_MAX_EXP!()] const MAX_EXP: i32;
#[doc = crate::_FLOAT_CONST_MIN_10_EXP!()] const MIN_10_EXP: i32;
#[doc = crate::_FLOAT_CONST_MAX_10_EXP!()] const MAX_10_EXP: i32;
#[doc = crate::_FLOAT_CONST_EPSILON!()] const EPSILON: Self;
#[doc = crate::_FLOAT_CONST_LOW_MARGIN!()] const LOW_MARGIN: Self;
#[doc = crate::_FLOAT_CONST_MEDIUM_MARGIN!()] const MEDIUM_MARGIN: Self;
#[doc = crate::_FLOAT_CONST_HIGH_MARGIN!()] const HIGH_MARGIN: Self;
#[doc = crate::_FLOAT_CONST_RADIX!()] const RADIX: u32;
#[doc = crate::_FLOAT_CONST_DIGITS!()] const DIGITS: u32;
#[doc = crate::_FLOAT_CONST_MANTISSA_DIGITS!()] const MANTISSA_DIGITS: u32;
#[doc = crate::_FLOAT_CONST_SIGNIFICAND_BITS!()] const SIGNIFICAND_BITS: u32;
#[doc = crate::_FLOAT_CONST_EXPONENT_BIAS!()] const EXPONENT_BIAS: u32;
#[doc = crate::_FLOAT_CONST_EXPONENT_BITS!()] const EXPONENT_BITS: u32;
#[doc = crate::_FLOAT_CONST_PI!()] const PI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_PI_2!()] const FRAC_PI_2: Self;
#[doc = crate::_FLOAT_CONST_FRAC_PI_3!()] const FRAC_PI_3: Self;
#[doc = crate::_FLOAT_CONST_FRAC_PI_4!()] const FRAC_PI_4: Self;
#[doc = crate::_FLOAT_CONST_FRAC_PI_6!()] const FRAC_PI_6: Self;
#[doc = crate::_FLOAT_CONST_FRAC_PI_8!()] const FRAC_PI_8: Self;
#[doc = crate::_FLOAT_CONST_SQRT_PI!()] const SQRT_PI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_PI!()] const FRAC_1_PI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_SQRT_PI!()] const FRAC_1_SQRT_PI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_SQRT_2PI!()] const FRAC_1_SQRT_2PI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_2_PI!()] const FRAC_2_PI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_2_SQRT_PI!()] const FRAC_2_SQRT_PI: Self;
#[doc = crate::_FLOAT_CONST_TAU!()] const TAU: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_2!()] const FRAC_TAU_2: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_3!()] const FRAC_TAU_3: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_4!()] const FRAC_TAU_4: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_5!()] const FRAC_TAU_5: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_6!()] const FRAC_TAU_6: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_8!()] const FRAC_TAU_8: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_9!()] const FRAC_TAU_9: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_12!()] const FRAC_TAU_12: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_16!()] const FRAC_TAU_16: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_24!()] const FRAC_TAU_24: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_72!()] const FRAC_TAU_72: Self;
#[doc = crate::_FLOAT_CONST_FRAC_TAU_360!()] const FRAC_TAU_360: Self;
#[doc = crate::_FLOAT_CONST_FRAC_360_TAU!()] const FRAC_360_TAU: Self;
#[doc = crate::_FLOAT_CONST_SQRT_TAU!()] const SQRT_TAU: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_TAU!()] const FRAC_1_TAU: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_SQRT_TAU!()] const FRAC_1_SQRT_TAU: Self;
#[doc = crate::_FLOAT_CONST_FRAC_2_TAU!()] const FRAC_2_TAU: Self;
#[doc = crate::_FLOAT_CONST_FRAC_2_SQRT_TAU!()] const FRAC_2_SQRT_TAU: Self;
#[doc = crate::_FLOAT_CONST_ARC_DEGREE!()] const ARC_DEGREE: Self;
#[doc = crate::_FLOAT_CONST_ARC_MINUTE!()] const ARC_MINUTE: Self;
#[doc = crate::_FLOAT_CONST_ARC_SECOND!()] const ARC_SECOND: Self;
#[doc = crate::_FLOAT_CONST_PHI!()] const PHI: Self;
#[doc = crate::_FLOAT_CONST_PHI!()] const GOLDEN_RATIO: Self; #[doc = crate::_FLOAT_CONST_SQ_PHI!()] const SQ_PHI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_PHI!()] const FRAC_1_PHI: Self;
#[doc = crate::_FLOAT_CONST_NEG_FRAC_1_PHI!()] const NEG_FRAC_1_PHI: Self;
#[doc = crate::_FLOAT_CONST_SQRT_PHI!()] const SQRT_PHI: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_SQRT_PHI!()] const FRAC_1_SQRT_PHI: Self;
#[doc = crate::_FLOAT_CONST_TRIBONACCI!()] const TRIBONACCI: Self;
#[doc = crate::_FLOAT_CONST_SQRT_2!()] const SQRT_2: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_SQRT_2!()] const FRAC_1_SQRT_2: Self;
#[doc = crate::_FLOAT_CONST_SQRT_3!()] const SQRT_3: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_SQRT_3!()] const FRAC_1_SQRT_3: Self;
#[doc = crate::_FLOAT_CONST_SQRT_5!()] const SQRT_5: Self;
#[doc = crate::_FLOAT_CONST_SQRT_6!()] const SQRT_6: Self;
#[doc = crate::_FLOAT_CONST_SQRT_7!()] const SQRT_7: Self;
#[doc = crate::_FLOAT_CONST_SQRT_8!()] const SQRT_8: Self;
#[doc = crate::_FLOAT_CONST_SQRT_10!()] const SQRT_10: Self;
#[doc = crate::_FLOAT_CONST_SQRT_11!()] const SQRT_11: Self;
#[doc = crate::_FLOAT_CONST_SQRT_12!()] const SQRT_12: Self;
#[doc = crate::_FLOAT_CONST_CBRT_2!()] const CBRT_2: Self;
#[doc = crate::_FLOAT_CONST_CBRT_3!()] const CBRT_3: Self;
#[doc = crate::_FLOAT_CONST_FRAC_1_CBRT_3!()] const FRAC_1_CBRT_3: Self;
#[doc = crate::_FLOAT_CONST_E!()] const E: Self;
#[doc = crate::_FLOAT_CONST_E!()] const EULER: Self;
#[doc = crate::_FLOAT_CONST_EGAMMA!()] const EGAMMA: Self;
#[doc = crate::_FLOAT_CONST_EGAMMA!()] const EULER_GAMMA: Self; #[doc = crate::_FLOAT_CONST_LOG2_E!()] const LOG2_E: Self;
#[doc = crate::_FLOAT_CONST_LOG2_10!()] const LOG2_10: Self;
#[doc = crate::_FLOAT_CONST_LOG10_E!()] const LOG10_E: Self;
#[doc = crate::_FLOAT_CONST_LOG10_2!()] const LOG10_2: Self;
#[doc = crate::_FLOAT_CONST_LN_2!()] const LN_2: Self;
#[doc = crate::_FLOAT_CONST_LN_10!()] const LN_10: Self;
}
macro_rules! impl_float_const {
($( $(#[$attrs:meta])* $f:ty ),+) => { $( impl_float_const![@$(#[$attrs])* $f]; )+ };
(@$(#[$attrs:meta])* $f:ty) => {
$(#[$attrs])*
impl FloatConst for $f {
const ONE: $f = 1.0;
const ZERO: $f = 0.0;
const NEG_ONE: $f = -1.0;
const NEG_ZERO: $f = -0.0;
const NAN: $f = <$f>::NAN;
const INFINITY: $f = <$f>::INFINITY;
const NEG_INFINITY: $f = <$f>::NEG_INFINITY;
const EPSILON: $f = <$f>::EPSILON;
const LOW_MARGIN: $f = _FloatInternals::<$f>::LOW_MARGIN;
const MEDIUM_MARGIN: $f = _FloatInternals::<$f>::MEDIUM_MARGIN;
const HIGH_MARGIN: $f = _FloatInternals::<$f>::HIGH_MARGIN;
const RADIX: u32 = <$f>::RADIX;
const DIGITS: u32 = <$f>::DIGITS;
const MANTISSA_DIGITS: u32 = <$f>::MANTISSA_DIGITS;
const SIGNIFICAND_BITS: u32 = _FloatInternals::<$f>::SIGNIFICAND_BITS;
const EXPONENT_BIAS: u32 = _FloatInternals::<$f>::EXPONENT_BIAS;
const EXPONENT_BITS: u32 = _FloatInternals::<$f>::EXPONENT_BITS;
const MIN: $f = <$f>::MIN;
const MIN_POSITIVE: $f = <$f>::MIN_POSITIVE;
const MAX: $f = <$f>::MAX;
const MIN_EXP: i32 = <$f>::MIN_EXP;
const MAX_EXP: i32 = <$f>::MAX_EXP;
const MIN_10_EXP: i32 = <$f>::MIN_10_EXP;
const MAX_10_EXP: i32 = <$f>::MAX_10_EXP;
const PI: $f = crate::PI!();
const FRAC_PI_2: $f = crate::FRAC_PI_2!();
const FRAC_PI_3: $f = crate::FRAC_PI_3!();
const FRAC_PI_4: $f = crate::FRAC_PI_4!();
const FRAC_PI_6: $f = crate::FRAC_PI_6!();
const FRAC_PI_8: $f = crate::FRAC_PI_8!();
const SQRT_PI: $f = crate::SQRT_PI!();
const FRAC_1_PI: $f = crate::FRAC_1_PI!();
const FRAC_1_SQRT_PI: $f = crate::FRAC_1_SQRT_PI!();
const FRAC_1_SQRT_2PI: $f = crate::FRAC_1_SQRT_2PI!();
const FRAC_2_PI: $f = crate::FRAC_2_PI!();
const FRAC_2_SQRT_PI: $f = crate::FRAC_2_SQRT_PI!();
const TAU: $f = crate::TAU!();
const FRAC_TAU_2: $f = crate::FRAC_TAU_2!();
const FRAC_TAU_3: $f = crate::FRAC_TAU_3!();
const FRAC_TAU_4: $f = crate::FRAC_TAU_4!();
const FRAC_TAU_5: $f = crate::FRAC_TAU_5!();
const FRAC_TAU_6: $f = crate::FRAC_TAU_6!();
const FRAC_TAU_8: $f = crate::FRAC_TAU_8!();
const FRAC_TAU_9: $f = crate::FRAC_TAU_9!();
const FRAC_TAU_12: $f = crate::FRAC_TAU_12!();
const FRAC_TAU_16: $f = crate::FRAC_TAU_16!();
const FRAC_TAU_24: $f = crate::FRAC_TAU_24!();
const FRAC_TAU_72: $f = crate::FRAC_TAU_72!();
const FRAC_TAU_360: $f = crate::FRAC_TAU_360!();
const FRAC_360_TAU: $f = crate::FRAC_360_TAU!();
const SQRT_TAU: $f = crate::SQRT_TAU!();
const FRAC_1_TAU: $f = crate::FRAC_1_TAU!();
const FRAC_1_SQRT_TAU: $f = crate::FRAC_1_SQRT_TAU!();
const FRAC_2_TAU: $f = crate::FRAC_2_TAU!();
const FRAC_2_SQRT_TAU: $f = crate::FRAC_2_SQRT_TAU!();
const ARC_DEGREE: $f = crate::ARC_DEGREE!();
const ARC_MINUTE: $f = crate::ARC_MINUTE!();
const ARC_SECOND: $f = crate::ARC_SECOND!();
const PHI: $f = crate::PHI!();
const GOLDEN_RATIO: $f = crate::PHI!(); const SQ_PHI: $f = crate::SQ_PHI!();
const FRAC_1_PHI: $f = crate::FRAC_1_PHI!();
const NEG_FRAC_1_PHI: $f = crate::NEG_FRAC_1_PHI!();
const SQRT_PHI: $f = crate::SQRT_PHI!();
const FRAC_1_SQRT_PHI: $f = crate::FRAC_1_SQRT_PHI!();
const TRIBONACCI: $f = crate::TRIBONACCI!();
const SQRT_2: $f = crate::SQRT_2!();
const FRAC_1_SQRT_2: $f = crate::FRAC_1_SQRT_2!();
const SQRT_3: $f = crate::SQRT_3!();
const FRAC_1_SQRT_3: $f = crate::FRAC_1_SQRT_3!();
const SQRT_5: $f = crate::SQRT_5!();
const SQRT_6: $f = crate::SQRT_6!();
const SQRT_7: $f = crate::SQRT_7!();
const SQRT_8: $f = crate::SQRT_8!();
const SQRT_10: $f = crate::SQRT_10!();
const SQRT_11: $f = crate::SQRT_11!();
const SQRT_12: $f = crate::SQRT_12!();
const CBRT_2: $f = crate::CBRT_2!();
const CBRT_3: $f = crate::CBRT_3!();
const FRAC_1_CBRT_3: $f = crate::FRAC_1_CBRT_3!();
const E: $f = crate::E!();
const EULER: $f = crate::E!();
const EGAMMA: $f = crate::EGAMMA!();
const EULER_GAMMA: $f = crate::EGAMMA!(); const LOG2_E: $f = crate::LOG2_E!();
const LOG2_10: $f = crate::LOG2_10!();
const LOG10_E: $f = crate::LOG10_E!();
const LOG10_2: $f = crate::LOG10_2!();
const LN_2: $f = crate::LN_2!();
const LN_10: $f = crate::LN_10!();
}
};
}
impl_float_const![f32, f64];
#[cfg(nightly_float)]
impl_float_const![
#[cfg_attr(nightly_doc, doc(cfg(nightly_float)))]
f16,
#[cfg_attr(nightly_doc, doc(cfg(nightly_float)))]
f128
];