From 850f6d2d0266c0b502f0f0aa39ae32de469d03d9 Mon Sep 17 00:00:00 2001 From: MovingtoMars Date: Fri, 29 Jan 2016 21:12:33 +1300 Subject: [PATCH] better f64_is_nan --- std/math.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/std/math.zig b/std/math.zig index 77a630d643..c563b45678 100644 --- a/std/math.zig +++ b/std/math.zig @@ -17,7 +17,11 @@ pub fn f64_get_neg_inf() -> f64 { } pub fn f64_is_nan(f: f64) -> bool { - 0x7FFFFFFFFFFFFFFF == f64_to_bits(f) // TODO improve to catch all cases + const bits = f64_to_bits(f); + const exp: i64 = i64((bits >> 52) & ((1 << 11) - 1)); + const sig = (bits & ((1 << 52) - 1)) | (1 << 52); + + sig != 0 && exp == (1 << 11) - 1 } pub fn f64_is_inf(f: f64) -> bool {