authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-09 18:52:32-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-09 18:52:32-07:00
logf2f1c63daff8e47b6b901d53fd58805e54fcdf78
tree042735c2220590eb2fae9222c97c1714e62319bf
parentf5471299d81e809c706e147d2ea79c83aeb8b650

stage2: add log and logf to freestanding libc


2 files changed, 15 insertions(+), 11 deletions(-)

lib/std/special/c.zig+15-3
...@@ -17,9 +17,13 @@ comptime {...@@ -17,9 +17,13 @@ comptime {
17 if (builtin.zig_backend != .stage1) {17 if (builtin.zig_backend != .stage1) {
18 @export(memset, .{ .name = "memset", .linkage = .Strong });18 @export(memset, .{ .name = "memset", .linkage = .Strong });
19 @export(memcpy, .{ .name = "memcpy", .linkage = .Strong });19 @export(memcpy, .{ .name = "memcpy", .linkage = .Strong });
20
20 @export(trunc, .{ .name = "trunc", .linkage = .Strong });21 @export(trunc, .{ .name = "trunc", .linkage = .Strong });
21 @export(truncf, .{ .name = "truncf", .linkage = .Strong });22 @export(truncf, .{ .name = "truncf", .linkage = .Strong });
22 @export(truncl, .{ .name = "truncl", .linkage = .Strong });23 @export(truncl, .{ .name = "truncl", .linkage = .Strong });
24
25 @export(log, .{ .name = "log", .linkage = .Strong });
26 @export(logf, .{ .name = "logf", .linkage = .Strong });
23 } else {27 } else {
24 _ = @import("c_stage1.zig");28 _ = @import("c_stage1.zig");
25 }29 }
...@@ -80,17 +84,25 @@ fn memcpy(noalias dest: ?[*]u8, noalias src: ?[*]const u8, len: usize) callconv(...@@ -80,17 +84,25 @@ fn memcpy(noalias dest: ?[*]u8, noalias src: ?[*]const u8, len: usize) callconv(
80 return dest;84 return dest;
81}85}
8286
83fn trunc(a: f64) f64 {87fn trunc(a: f64) callconv(.C) f64 {
84 return math.trunc(a);88 return math.trunc(a);
85}89}
8690
87fn truncf(a: f32) f32 {91fn truncf(a: f32) callconv(.C) f32 {
88 return math.trunc(a);92 return math.trunc(a);
89}93}
9094
91fn truncl(a: c_longdouble) c_longdouble {95fn truncl(a: c_longdouble) callconv(.C) c_longdouble {
92 if (!long_double_is_f128) {96 if (!long_double_is_f128) {
93 @panic("TODO implement this");97 @panic("TODO implement this");
94 }98 }
95 return math.trunc(a);99 return math.trunc(a);
96}100}
101
102fn log(a: f64) callconv(.C) f64 {
103 return math.ln(a);
104}
105
106fn logf(a: f32) callconv(.C) f32 {
107 return math.ln(a);
108}
lib/std/special/c_stage1.zig-8
...@@ -708,14 +708,6 @@ export fn exp2f(a: f32) f32 {...@@ -708,14 +708,6 @@ export fn exp2f(a: f32) f32 {
708 return math.exp2(a);708 return math.exp2(a);
709}709}
710710
711export fn log(a: f64) f64 {
712 return math.ln(a);
713}
714
715export fn logf(a: f32) f32 {
716 return math.ln(a);
717}
718
719export fn log2(a: f64) f64 {711export fn log2(a: f64) f64 {
720 return math.log2(a);712 return math.log2(a);
721}713}