Commit aecbd1892a

Shawn Landden <shawn@git.icu>
2019-04-05 15:47:52
Simplify math.isnan
We can just rely on the builtin behavior.
1 parent 1dc6751
Changed files (1)
std
std/math/isnan.zig
@@ -4,28 +4,7 @@ const expect = std.testing.expect;
 const maxInt = std.math.maxInt;
 
 pub fn isNan(x: var) bool {
-    const T = @typeOf(x);
-    switch (T) {
-        f16 => {
-            const bits = @bitCast(u16, x);
-            return (bits & 0x7fff) > 0x7c00;
-        },
-        f32 => {
-            const bits = @bitCast(u32, x);
-            return bits & 0x7FFFFFFF > 0x7F800000;
-        },
-        f64 => {
-            const bits = @bitCast(u64, x);
-            return (bits & (maxInt(u64) >> 1)) > (u64(0x7FF) << 52);
-        },
-        f128 => {
-            const bits = @bitCast(u128, x);
-            return (bits & (maxInt(u128) >> 1)) > (u128(0x7FFF) << 112);
-        },
-        else => {
-            @compileError("isNan not implemented for " ++ @typeName(T));
-        },
-    }
+    return x != x;
 }
 
 /// Note: A signalling nan is identical to a standard nan right now but may have a different bit