use-number 0.0.4

Utility-first numeric building blocks for RustUse
Documentation
use use_number::{
    GOLDEN_RATIO, NumberCategory, NumberSign, SQRT_3, classify_number, classify_number_sign,
    is_finite_number,
};

#[test]
fn direct_number_usage_covers_classification_and_constants() {
    assert_eq!(classify_number(f64::NAN), NumberCategory::Nan);
    assert_eq!(classify_number(f64::NEG_INFINITY), NumberCategory::Infinite);
    assert_eq!(classify_number(0.0), NumberCategory::Zero);
    assert_eq!(
        classify_number(f64::from_bits(1)),
        NumberCategory::Subnormal
    );
    assert_eq!(classify_number(4.0), NumberCategory::Normal);

    assert_eq!(classify_number_sign(-3.5), Some(NumberSign::Negative));
    assert_eq!(classify_number_sign(-0.0), Some(NumberSign::Zero));
    assert_eq!(classify_number_sign(9.0), Some(NumberSign::Positive));
    assert_eq!(classify_number_sign(f64::NAN), None);

    assert!(is_finite_number(7.0));
    assert!(!is_finite_number(f64::INFINITY));

    assert!(
        GOLDEN_RATIO
            .mul_add(GOLDEN_RATIO, -(GOLDEN_RATIO + 1.0))
            .abs()
            < 1.0e-12
    );
    assert!(SQRT_3.mul_add(SQRT_3, -3.0).abs() < 1.0e-12);
}