aboutsummaryrefslogtreecommitdiff
path: root/lib/std/math/isnan.zig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/math/isnan.zig')
-rw-r--r--lib/std/math/isnan.zig27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/std/math/isnan.zig b/lib/std/math/isnan.zig
new file mode 100644
index 0000000000..cf8cd2e1c2
--- /dev/null
+++ b/lib/std/math/isnan.zig
@@ -0,0 +1,27 @@
+const std = @import("../std.zig");
+const math = std.math;
+const expect = std.testing.expect;
+const maxInt = std.math.maxInt;
+
+/// Returns whether x is a nan.
+pub fn isNan(x: var) bool {
+ return x != x;
+}
+
+/// Returns whether x is a signalling nan.
+pub fn isSignalNan(x: var) bool {
+ // Note: A signalling nan is identical to a standard nan right now but may have a different bit
+ // representation in the future when required.
+ return isNan(x);
+}
+
+test "math.isNan" {
+ expect(isNan(math.nan(f16)));
+ expect(isNan(math.nan(f32)));
+ expect(isNan(math.nan(f64)));
+ expect(isNan(math.nan(f128)));
+ expect(!isNan(f16(1.0)));
+ expect(!isNan(f32(1.0)));
+ expect(!isNan(f64(1.0)));
+ expect(!isNan(f128(1.0)));
+}