From aecbd1892a871a2b046ceda9058c4132cd0cb392 Mon Sep 17 00:00:00 2001 From: Shawn Landden Date: Fri, 5 Apr 2019 08:47:52 -0500 Subject: Simplify math.isnan We can just rely on the builtin behavior. --- std/math/isnan.zig | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/std/math/isnan.zig b/std/math/isnan.zig index 7645528ea9..9e541bf0a2 100644 --- a/std/math/isnan.zig +++ b/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 -- cgit v1.2.3