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:
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