Skip to main content

probability

Macro probability 

Source
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);