mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
Simplify math.isnan
We can just rely on the builtin behavior.
This commit is contained in:
parent
1dc6751721
commit
aecbd1892a
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user