authorgravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2025-03-25 00:01:01+03:30
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-03-31 19:07:34-04:00
logb636d56d6a71b9ed521de7fccb519b7d0fa3db90
tree31ece6f57f89f293e1c49d80b833f871cec2bd7b
parentb431e9af9764b118ac8f515b4fede3192474d338

zon: normalize negative zeroes


1 files changed, 16 insertions(+), 8 deletions(-)

lib/std/zon/stringify.zig+16-8
...@@ -627,10 +627,16 @@ pub fn Serializer(Writer: type) type {...@@ -627,10 +627,16 @@ pub fn Serializer(Writer: type) type {
627 return self.writer.writeAll("inf");627 return self.writer.writeAll("inf");
628 } else if (std.math.isNegativeInf(val)) {628 } else if (std.math.isNegativeInf(val)) {
629 return self.writer.writeAll("-inf");629 return self.writer.writeAll("-inf");
630 } else if (std.math.isNegativeZero(val)) {
631 return self.writer.writeAll("-0.0");
632 } else {
633 try std.fmt.format(self.writer, "{d}", .{val});
634 },
635 .comptime_float => if (val == 0) {
636 return self.writer.writeAll("0");
630 } else {637 } else {
631 try std.fmt.format(self.writer, "{d}", .{val});638 try std.fmt.format(self.writer, "{d}", .{val});
632 },639 },
633 .comptime_float => try std.fmt.format(self.writer, "{d}", .{val}),
634 else => comptime unreachable,640 else => comptime unreachable,
635 }641 }
636 }642 }
...@@ -2103,10 +2109,11 @@ test "std.zon stringify primitives" {...@@ -2103,10 +2109,11 @@ test "std.zon stringify primitives" {
2103 \\ .b = 0.3333333333333333333333333333333333,2109 \\ .b = 0.3333333333333333333333333333333333,
2104 \\ .c = 3.1415926535897932384626433832795028,2110 \\ .c = 3.1415926535897932384626433832795028,
2105 \\ .d = 0,2111 \\ .d = 0,
2106 \\ .e = -0,2112 \\ .e = 0,
2107 \\ .f = inf,2113 \\ .f = -0.0,
2108 \\ .g = -inf,2114 \\ .g = inf,
2109 \\ .h = nan,2115 \\ .h = -inf,
2116 \\ .i = nan,
2110 \\}2117 \\}
2111 ,2118 ,
2112 .{2119 .{
...@@ -2115,9 +2122,10 @@ test "std.zon stringify primitives" {...@@ -2115,9 +2122,10 @@ test "std.zon stringify primitives" {
2115 .c = std.math.pi,2122 .c = std.math.pi,
2116 .d = 0.0,2123 .d = 0.0,
2117 .e = -0.0,2124 .e = -0.0,
2118 .f = std.math.inf(f32),2125 .f = @as(f128, -0.0),
2119 .g = -std.math.inf(f32),2126 .g = std.math.inf(f32),
2120 .h = std.math.nan(f32),2127 .h = -std.math.inf(f32),
2128 .i = std.math.nan(f32),
2121 },2129 },
2122 .{},2130 .{},
2123 );2131 );