From 6cdd576d4176c2581f796c2066ca0f92bda03c9e Mon Sep 17 00:00:00 2001 From: badayvedat Date: Sat, 14 Mar 2026 23:08:21 +0300 Subject: [PATCH] libzigc: fdim --- lib/c/math.zig | 14 ++++++++++++++ lib/libc/musl/src/math/fdim.c | 10 ---------- src/libs/musl.zig | 1 - src/libs/wasi_libc.zig | 1 - test/libc.zig | 2 +- 5 files changed, 15 insertions(+), 13 deletions(-) delete mode 100644 lib/libc/musl/src/math/fdim.c diff --git a/lib/c/math.zig b/lib/c/math.zig index 3f7b9ca237424d16173ef8b69c947b4e9de18b23..5b191c3e93c80d24bfdc4ae823f80b77f1fcb64f 100644 --- a/lib/c/math.zig +++ b/lib/c/math.zig @@ -59,6 +59,7 @@ comptime { symbol(&cosh, "cosh"); symbol(&exp10, "exp10"); symbol(&exp10f, "exp10f"); + symbol(&fdim, "fdim"); symbol(&hypot, "hypot"); symbol(&modf, "modf"); symbol(&pow, "pow"); @@ -147,6 +148,19 @@ fn exp10f(x: f32) callconv(.c) f32 { return math.pow(f32, 10.0, x); } +fn fdim(x: f64, y: f64) callconv(.c) f64 { + if (math.isNan(x)) { + return x; + } + if (math.isNan(y)) { + return y; + } + if (x > y) { + return x - y; + } + return 0; +} + fn hypot(x: f64, y: f64) callconv(.c) f64 { return math.hypot(x, y); } diff --git a/lib/libc/musl/src/math/fdim.c b/lib/libc/musl/src/math/fdim.c deleted file mode 100644 index 958546064389bfa3bb5bb2fc16b728726b3ea1f6..0000000000000000000000000000000000000000 --- a/lib/libc/musl/src/math/fdim.c +++ /dev/null @@ -1,10 +0,0 @@ -#include - -double fdim(double x, double y) -{ - if (isnan(x)) - return x; - if (isnan(y)) - return y; - return x > y ? x - y : 0; -} diff --git a/src/libs/musl.zig b/src/libs/musl.zig index b96ffbf18a324457960f821e0814a7f9bf372113..96b101c330954691f98d776c8c0fe54b8daa9c12 100644 --- a/src/libs/musl.zig +++ b/src/libs/musl.zig @@ -830,7 +830,6 @@ const src_files = [_][]const u8{ "musl/src/math/expm1l.c", "musl/src/math/__expo2.c", "musl/src/math/__expo2f.c", - "musl/src/math/fdim.c", "musl/src/math/fdimf.c", "musl/src/math/fdiml.c", "musl/src/math/finite.c", diff --git a/src/libs/wasi_libc.zig b/src/libs/wasi_libc.zig index de7cabd542d5841c24344a33ae532fadd2c5cb2d..12edf9b783a9a1954c008f229178756a937bfb21 100644 --- a/src/libs/wasi_libc.zig +++ b/src/libs/wasi_libc.zig @@ -695,7 +695,6 @@ const libc_top_half_src_files = [_][]const u8{ "musl/src/math/expm1.c", "musl/src/math/expm1f.c", "musl/src/math/expm1l.c", - "musl/src/math/fdim.c", "musl/src/math/fdimf.c", "musl/src/math/fdiml.c", "musl/src/math/finite.c", diff --git a/test/libc.zig b/test/libc.zig index 1257c690e814fb801da84b1e7d2740803d6a79f8..fde63d224d24cb10eccfb84690aa2196959cc58a 100644 --- a/test/libc.zig +++ b/test/libc.zig @@ -197,7 +197,7 @@ pub fn addCases(cases: *tests.LibcContext) void { cases.addLibcTestCase("math/fabs.c", true, .{}); cases.addLibcTestCase("math/fabsf.c", true, .{}); cases.addLibcTestCase("math/fabsl.c", true, .{}); - // cases.addLibcTestCase("math/fdim.c", true, .{}); + cases.addLibcTestCase("math/fdim.c", true, .{}); // cases.addLibcTestCase("math/fdimf.c", true, .{}); // cases.addLibcTestCase("math/fdiml.c", true, .{}); cases.addLibcTestCase("math/fenv.c", true, .{}); -- 2.54.0