authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-06 16:23:25-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-06 16:23:42-07:00
log18950e865ec96f55d7549c2118ba033711bd5824
tree29bcd6b5b8a2b68fd68c28158d0a89b2bd7e3737
parent222ea6992de2b3edf23e332b68aa163599096216

std.fmt.parse_float: disable failing aarch64 test from LLVM 14

See #12027

1 files changed, 18 insertions(+), 6 deletions(-)

lib/std/fmt/parse_float.zig+18-6
...@@ -1,6 +1,7 @@...@@ -1,6 +1,7 @@
1pub const parseFloat = @import("parse_float/parse_float.zig").parseFloat;1pub const parseFloat = @import("parse_float/parse_float.zig").parseFloat;
2pub const ParseFloatError = @import("parse_float/parse_float.zig").ParseFloatError;2pub const ParseFloatError = @import("parse_float/parse_float.zig").ParseFloatError;
33
4const builtin = @import("builtin");
4const std = @import("std");5const std = @import("std");
5const math = std.math;6const math = std.math;
6const testing = std.testing;7const testing = std.testing;
...@@ -14,8 +15,6 @@ const epsilon = 1e-7;...@@ -14,8 +15,6 @@ const epsilon = 1e-7;
1415
15test "fmt.parseFloat" {16test "fmt.parseFloat" {
16 inline for ([_]type{ f16, f32, f64, f128 }) |T| {17 inline for ([_]type{ f16, f32, f64, f128 }) |T| {
17 const Z = std.meta.Int(.unsigned, @typeInfo(T).Float.bits);
18
19 try testing.expectError(error.InvalidCharacter, parseFloat(T, ""));18 try testing.expectError(error.InvalidCharacter, parseFloat(T, ""));
20 try testing.expectError(error.InvalidCharacter, parseFloat(T, " 1"));19 try testing.expectError(error.InvalidCharacter, parseFloat(T, " 1"));
21 try testing.expectError(error.InvalidCharacter, parseFloat(T, "1abc"));20 try testing.expectError(error.InvalidCharacter, parseFloat(T, "1abc"));
...@@ -40,10 +39,6 @@ test "fmt.parseFloat" {...@@ -40,10 +39,6 @@ test "fmt.parseFloat" {
40 try expectEqual(try parseFloat(T, "1e-5000"), 0);39 try expectEqual(try parseFloat(T, "1e-5000"), 0);
41 try expectEqual(try parseFloat(T, "1e+5000"), std.math.inf(T));40 try expectEqual(try parseFloat(T, "1e+5000"), std.math.inf(T));
4241
43 try expectEqual(@bitCast(Z, try parseFloat(T, "nAn")), @bitCast(Z, std.math.nan(T)));
44 try expectEqual(try parseFloat(T, "inF"), std.math.inf(T));
45 try expectEqual(try parseFloat(T, "-INF"), -std.math.inf(T));
46
47 try expectEqual(try parseFloat(T, "0.4e0066999999999999999999999999999999999999999999999999999"), std.math.inf(T));42 try expectEqual(try parseFloat(T, "0.4e0066999999999999999999999999999999999999999999999999999"), std.math.inf(T));
48 try expect(approxEqAbs(T, try parseFloat(T, "0_1_2_3_4_5_6.7_8_9_0_0_0e0_0_1_0"), @as(T, 123456.789000e10), epsilon));43 try expect(approxEqAbs(T, try parseFloat(T, "0_1_2_3_4_5_6.7_8_9_0_0_0e0_0_1_0"), @as(T, 123456.789000e10), epsilon));
4944
...@@ -74,6 +69,23 @@ test "fmt.parseFloat" {...@@ -74,6 +69,23 @@ test "fmt.parseFloat" {
74 }69 }
75}70}
7671
72test "fmt.parseFloat nan and inf" {
73 if ((builtin.zig_backend == .stage1 or builtin.zig_backend == .stage2_llvm) and
74 builtin.cpu.arch == .aarch64)
75 {
76 // https://github.com/ziglang/zig/issues/12027
77 return error.SkipZigTest;
78 }
79
80 inline for ([_]type{ f16, f32, f64, f128 }) |T| {
81 const Z = std.meta.Int(.unsigned, @typeInfo(T).Float.bits);
82
83 try expectEqual(@bitCast(Z, try parseFloat(T, "nAn")), @bitCast(Z, std.math.nan(T)));
84 try expectEqual(try parseFloat(T, "inF"), std.math.inf(T));
85 try expectEqual(try parseFloat(T, "-INF"), -std.math.inf(T));
86 }
87}
88
77test "fmt.parseFloat #11169" {89test "fmt.parseFloat #11169" {
78 try expectEqual(try parseFloat(f128, "9007199254740993.0"), 9007199254740993.0);90 try expectEqual(try parseFloat(f128, "9007199254740993.0"), 9007199254740993.0);
79}91}