Commit Diff


commit - fdfecd686054be1aac715fb3b99669873df002bb
commit + ada7ea055b221d489ebfbf2b2900b4e39f3fd043
blob - 8fad49ebd2513c76f354e7cd205f7074b90e156c
blob + 3a1f2111003ab81e6efd6b58e92e0804f0e1b70c
--- src/lib9/fmt/nan64.c
+++ src/lib9/fmt/nan64.c
@@ -31,7 +31,8 @@ __isNaN(double d)
 
 	p = &d;
 	x = *(uvlong*)p;
-	return (ulong)((x>>52)&0x7FF)==0x7FF && !__isInf(d, 0);
+	/* IEEE 754: exponent bits 0x7FF and non-zero mantissa */
+	return (x&uvinf) == uvinf && (x&~uvneginf) != 0;
 }
 
 double