macro_rules! probability {
($value:literal) => { ... };
($numerator:literal, $denominator:literal) => { ... };
($numerator:expr, $denominator:expr) => { ... };
}Expand description
Creates a Probability from an integer ratio or an exactly representable f64.
The two-argument form preserves the exact ratio. The one-argument form preserves the exact IEEE-754 value and accepts only a literal that maps exactly to a 64-bit threshold. Ratio literals are validated at compile time; ratio expressions are validated at runtime.
§Panics
The ratio expression form panics if its denominator is zero or its numerator exceeds the
denominator. Use Probability::new or Probability::try_from to validate untrusted values
without panicking.
§Examples
use commonware_utils::{Probability, probability};
const HALF: Probability = probability!(1, 2);
const NINETY_EIGHT_PERCENT: Probability = probability!(0.98);
assert_eq!(HALF.as_f64(), 0.5);
assert_eq!(NINETY_EIGHT_PERCENT.as_f64(), 0.98);ⓘ
use commonware_utils::{Probability, probability};
const INVALID: Probability = probability!(2, 1);ⓘ
use commonware_utils::{Probability, probability};
const REQUIRES_ROUNDING: Probability = probability!(1e-20);