aboutsummaryrefslogtreecommitdiff
path: root/lib/c
diff options
context:
space:
mode:
authorDavid Senoner <seda18@rolmail.net>2025-08-26 14:16:55 +0200
committerAlex Rønne Petersen <alex@alexrp.com>2025-08-27 03:58:32 +0200
commit9399fcddce0bcd8e987b053f3946aa1b0ff2ef0a (patch)
treed72180f3ea1097a78cb52fc6567a1d7762efee41 /lib/c
parentaae5560712fb67cea2b1405c4e2b03e9be236678 (diff)
downloadzig-9399fcddce0bcd8e987b053f3946aa1b0ff2ef0a.tar.gz
zig-9399fcddce0bcd8e987b053f3946aa1b0ff2ef0a.zip
libc: use zig isnan and derivates for mingw
Diffstat (limited to 'lib/c')
-rw-r--r--lib/c/math.zig26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/c/math.zig b/lib/c/math.zig
new file mode 100644
index 0000000000..161e400e6d
--- /dev/null
+++ b/lib/c/math.zig
@@ -0,0 +1,26 @@
+const std = @import("std");
+const common = @import("common.zig");
+const builtin = @import("builtin");
+
+comptime {
+ if (builtin.target.isMinGW()) {
+ @export(&isnan, .{ .name = "isnan", .linkage = common.linkage, .visibility = common.visibility });
+ @export(&isnan, .{ .name = "__isnan", .linkage = common.linkage, .visibility = common.visibility });
+ @export(&isnanf, .{ .name = "isnanf", .linkage = common.linkage, .visibility = common.visibility });
+ @export(&isnanf, .{ .name = "__isnanf", .linkage = common.linkage, .visibility = common.visibility });
+ @export(&isnanl, .{ .name = "isnanl", .linkage = common.linkage, .visibility = common.visibility });
+ @export(&isnanl, .{ .name = "__isnanl", .linkage = common.linkage, .visibility = common.visibility });
+ }
+}
+
+fn isnan(x: f64) callconv(.c) c_int {
+ return if (std.math.isNan(x)) 1 else 0;
+}
+
+fn isnanf(x: f32) callconv(.c) c_int {
+ return if (std.math.isNan(x)) 1 else 0;
+}
+
+fn isnanl(x: c_longdouble) callconv(.c) c_int {
+ return if (std.math.isNan(x)) 1 else 0;
+}