無限大を含む四則演算

無限大を含む四則演算は直感通り。

        assert_eq!(1.0 / 0.0, f64::INFINITY);

        assert_eq!(f64::INFINITY + 1.0, f64::INFINITY);
        assert_eq!(f64::INFINITY * 2.0, f64::INFINITY);
        assert_eq!(f64::INFINITY + f64::INFINITY, f64::INFINITY);
        assert_eq!(f64::INFINITY / 0.0, f64::INFINITY);

        assert_eq!(f64::INFINITY, f64::INFINITY);
        // assert!(f64::NAN != f64::NAN);

        assert_eq!(-f64::INFINITY, f64::NEG_INFINITY);
        assert_eq!(f64::INFINITY * (-3.0), f64::NEG_INFINITY);

        assert!((f64::INFINITY + f64::NEG_INFINITY).is_nan());
        assert!((f64::INFINITY - f64::INFINITY).is_nan());
        assert!((f64::INFINITY * 0.0).is_nan());

NaN について

以下のような計算結果は NaNになる

NaN ≠ NaN である。

そのため、f64 には Eq を実装できず、PartialEq しか実装されていない

また、Eq を実装されていないため、Ord は実装されておらず、PartialOrd しか実装されていない。

(なお、Eq が実装されていようが、NaN と他の値は比較できないため、Ord は実装できない)

Eq/Partial Eq/Ord/PartialOrd の話は Rust での順序について を参照

f64 でのソート/min取得 の方法