zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit aecbd1892a871a2b046ceda9058c4132cd0cb392 (tree)
parent 1dc6751721a2fe9990ea8fab4eadc95a29f53304
Author: Shawn Landden <shawn@git.icu>
Date:   Fri,  5 Apr 2019 08:47:52 -0500

Simplify math.isnan

We can just rely on the builtin behavior.

Diffstat:
Mstd/math/isnan.zig | 23+----------------------
1 file changed, 1 insertion(+), 22 deletions(-)

diff --git 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