From c46f7588cea98c48e6c7f637e13536378027e260 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 31 Jan 2022 20:57:05 -0700 Subject: [PATCH] std.fmt.parseHexFloat: clean up bitwise logic * fold a couple separate operations into one * use const instead of var * naming conventions --- lib/std/fmt/parse_hex_float.zig | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/std/fmt/parse_hex_float.zig b/lib/std/fmt/parse_hex_float.zig index 5057823394..83c798ab96 100644 --- a/lib/std/fmt/parse_hex_float.zig +++ b/lib/std/fmt/parse_hex_float.zig @@ -206,13 +206,11 @@ pub fn parseHexFloat(comptime T: type, s: []const u8) !T { // - we've truncated more than 0.5ULP (R=S=1) // - we've truncated exactly 0.5ULP (R=1 S=0) // Were are going to increase the mantissa (round up) - var exactly_half = (mantissa & 0b11) == 0b10; - var more_than_half = (mantissa & 0b11) == 0b11; + const guard_bit_and_half_or_more = (mantissa & 0b110) == 0b110; mantissa >>= 2; - var guardBit = mantissa & 1 == 1; exponent += 2; - if (guardBit and (exactly_half or more_than_half)) { + if (guard_bit_and_half_or_more) { mantissa += 1; }