1const builtin = @import("builtin");
2
3const std = @import("std");
4const intmax_t = std.c.intmax_t;
5const imaxdiv_t = std.c.imaxdiv_t;
6
7const symbol = @import("../c.zig").symbol;
8
9comptime {
10 if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) {
11 // Functions specific to musl and wasi-libc.
12 symbol(&imaxabs, "imaxabs");
13 symbol(&imaxdiv, "imaxdiv");
14 }
15}
16
17fn imaxabs(a: intmax_t) callconv(.c) intmax_t {
18 return @intCast(@abs(a));
19}
20
21fn imaxdiv(a: intmax_t, b: intmax_t) callconv(.c) imaxdiv_t {
22 return .{
23 .quot = @divTrunc(a, b),
24 .rem = @rem(a, b),
25 };
26}