add math consts context

This commit is contained in:
Edwin Svensson 2021-05-30 11:08:59 +02:00
parent 1bed7e1f9f
commit ec880155c7
No known key found for this signature in database
GPG Key ID: 7F9EC4DD0C67951F

View File

@ -163,3 +163,41 @@ macro_rules! context_map {
.map(|_| context)
}};
}
/// Context with all f64::consts available by default.
/// Alternatively, specifiy constants with math_consts_context!(E, PI, TAU, ...)
/// Available constants can be found in the core::f64::consts module.
#[macro_export]
macro_rules! math_consts_context {
() => {
$crate::math_consts_context!(
PI,
TAU,
FRAC_PI_2,
FRAC_PI_3,
FRAC_PI_4,
FRAC_PI_6,
FRAC_PI_8,
FRAC_1_PI,
FRAC_2_PI,
FRAC_2_SQRT_PI,
SQRT_2,
FRAC_1_SQRT_2,
E,
LOG2_10,
LOG2_E,
LOG10_2,
LOG10_E,
LN_2,
LN_10
)
};
($($name:ident),*) => {{
use $crate::ContextWithMutableVariables;
$crate::context_map! {
$(
stringify!($name) => core::f64::consts::$name,
)*
}
}};
}