authorgravatar for marc@tiehu.isMarc Tiehuis <marc@tiehu.is> 2022-05-03 19:04:16+12:00
committergravatar for marc@tiehu.isMarc Tiehuis <marc@tiehu.is> 2022-05-03 19:04:16+12:00
log02209d8a5f7b26d503ca5c3a73219fa8839243f6
treed8f4036a45f1a1034292aee9364a957a1861763d
parent5fbda2c579f584c770eadc0e236ed0933be739a8

fix aarch64 f16 nan parse test failure


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

lib/std/fmt/parse_float/parse.zig+4-6
......@@ -240,14 +240,15 @@ pub fn parseNumber(comptime T: type, s: []const u8, negative: bool) ?Number(T) {
240240 return null;
241241}
242242
243fn parsePartialInfOrNan(comptime T: type, s: []const u8, n: *usize) ?T {
243fn parsePartialInfOrNan(comptime T: type, s: []const u8, negative: bool, n: *usize) ?T {
244244 // inf/infinity; infxxx should only consume inf.
245245 if (std.ascii.startsWithIgnoreCase(s, "inf")) {
246246 n.* = 3;
247247 if (std.ascii.startsWithIgnoreCase(s[3..], "inity")) {
248248 n.* = 8;
249249 }
250 return std.math.inf(T);
250
251 return if (!negative) std.math.inf(T) else -std.math.inf(T);
251252 }
252253
253254 if (std.ascii.startsWithIgnoreCase(s, "nan")) {
......@@ -260,11 +261,8 @@ fn parsePartialInfOrNan(comptime T: type, s: []const u8, n: *usize) ?T {
260261
261262pub fn parseInfOrNan(comptime T: type, s: []const u8, negative: bool) ?T {
262263 var consumed: usize = 0;
263 if (parsePartialInfOrNan(T, s, &consumed)) |special| {
264 if (parsePartialInfOrNan(T, s, negative, &consumed)) |special| {
264265 if (s.len == consumed) {
265 if (negative) {
266 return -1 * special;
267 }
268266 return special;
269267 }
270268 }