From eb26aeb1e527b5f43f7f789d3a995dca8c73e2e9 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sat, 19 Aug 2017 02:29:18 -0400 Subject: [PATCH] std: better int log2 implementation for number literals --- std/math/log2.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/std/math/log2.zig b/std/math/log2.zig index fecc9e59e17adfb830e390017f3156294c1cf22e..979726442ea741ee2fa7cac53f016acf3036cd2a 100644 --- a/std/math/log2.zig +++ b/std/math/log2.zig @@ -26,8 +26,11 @@ fn log2_workaround(x: var) -> @typeOf(x) { else => @compileError("log2 not implemented for " ++ @typeName(T)), }; }, - TypeId.IntLiteral => { - return @typeOf(1)(log2_int(u128, x)) + TypeId.IntLiteral => comptime { + var result = 0; + var x_shifted = x; + while ({x_shifted >>= 1; x_shifted != 0}) : (result += 1) {} + return result; }, TypeId.Int => { return log2_int(T, x); -- 2.54.0