無限大を含む四則演算は直感通り。
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 である。
そのため、f64 には Eq を実装できず、PartialEq しか実装されていない
また、Eq を実装されていないため、Ord は実装されておらず、PartialOrd しか実装されていない。
(なお、Eq が実装されていようが、NaN と他の値は比較できないため、Ord は実装できない)
Eq/Partial Eq/Ord/PartialOrd の話は Rust での順序について を参照