From 2cbd6980e5a06ce4a2828a10b6cdb0efba827f84 Mon Sep 17 00:00:00 2001 From: mihael Date: Fri, 20 Mar 2026 17:44:23 +0100 Subject: [PATCH] `libzigc/math`: Implement `finite`, `finitef` The behaviour of `libc` `finite` functions is the same as Zig std's, so the function basically delegates to `math.isFinite` and no new tests were added. These functions are obsolete, but still part of `musl`. No results are attached in this case as `libc-test` doesn't have tests for them. --- lib/c/math.zig | 10 ++++++++++ lib/libc/musl/src/math/finite.c | 7 ------- lib/libc/musl/src/math/finitef.c | 7 ------- src/libs/musl.zig | 2 -- src/libs/wasi_libc.zig | 2 -- 5 files changed, 10 insertions(+), 18 deletions(-) delete mode 100644 lib/libc/musl/src/math/finite.c delete mode 100644 lib/libc/musl/src/math/finitef.c diff --git a/lib/c/math.zig b/lib/c/math.zig index 1f80e1cc7e5362891884988ecff8423269bf9ce8..36bdfcfa753e66d3506beefccb7484f8260a3747 100644 --- a/lib/c/math.zig +++ b/lib/c/math.zig @@ -62,6 +62,8 @@ comptime { symbol(&exp10, "exp10"); symbol(&exp10f, "exp10f"); symbol(&fdim, "fdim"); + symbol(&finite, "finite"); + symbol(&finitef, "finitef"); symbol(&frexp, "frexp"); symbol(&hypot, "hypot"); symbol(&modf, "modf"); @@ -164,6 +166,14 @@ fn fdim(x: f64, y: f64) callconv(.c) f64 { return 0; } +fn finite(x: f64) callconv(.c) c_int { + return if (math.isFinite(x)) 1 else 0; +} + +fn finitef(x: f32) callconv(.c) c_int { + return if (math.isFinite(x)) 1 else 0; +} + fn frexpGeneric(comptime T: type, x: T, e: *c_int) T { // libc expects `*e` to be unspecified in this case; an unspecified C value // should be a valid value of the relevant type, yet Zig's std diff --git a/lib/libc/musl/src/math/finite.c b/lib/libc/musl/src/math/finite.c deleted file mode 100644 index 25a0575fb9757d6ddaec5a538db7984d007fdb55..0000000000000000000000000000000000000000 --- a/lib/libc/musl/src/math/finite.c +++ /dev/null @@ -1,7 +0,0 @@ -#define _GNU_SOURCE -#include - -int finite(double x) -{ - return isfinite(x); -} diff --git a/lib/libc/musl/src/math/finitef.c b/lib/libc/musl/src/math/finitef.c deleted file mode 100644 index 2c4c771463a1b244244edf3ea92026f8fe78c67a..0000000000000000000000000000000000000000 --- a/lib/libc/musl/src/math/finitef.c +++ /dev/null @@ -1,7 +0,0 @@ -#define _GNU_SOURCE -#include - -int finitef(float x) -{ - return isfinite(x); -} diff --git a/src/libs/musl.zig b/src/libs/musl.zig index 73f93a82710d735f2b7998d27811c2d2be2dc0c9..c451312bbb9d39620f92364b173df38bc499e795 100644 --- a/src/libs/musl.zig +++ b/src/libs/musl.zig @@ -831,8 +831,6 @@ const src_files = [_][]const u8{ "musl/src/math/__expo2f.c", "musl/src/math/fdimf.c", "musl/src/math/fdiml.c", - "musl/src/math/finite.c", - "musl/src/math/finitef.c", "musl/src/math/fma.c", "musl/src/math/fmaf.c", "musl/src/math/fmal.c", diff --git a/src/libs/wasi_libc.zig b/src/libs/wasi_libc.zig index 75840076a50064095e72ae64cdb46013ed756a5e..fbc5f5a142d7dcec086d2333446a3ea85bd8b17b 100644 --- a/src/libs/wasi_libc.zig +++ b/src/libs/wasi_libc.zig @@ -697,8 +697,6 @@ const libc_top_half_src_files = [_][]const u8{ "musl/src/math/expm1l.c", "musl/src/math/fdimf.c", "musl/src/math/fdiml.c", - "musl/src/math/finite.c", - "musl/src/math/finitef.c", "musl/src/math/fma.c", "musl/src/math/fmaf.c", "musl/src/math/ilogb.c", -- 2.54.0