authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-08-19 02:29:18-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-08-19 02:29:18-04:00
logeb26aeb1e527b5f43f7f789d3a995dca8c73e2e9
treef3e74b99c5593c922e9c59cb27dd11beef9683a1
parentcd2f65ff6ace9f1e426d5e8a4721666d347b289d

std: better int log2 implementation for number literals


1 files changed, 5 insertions(+), 2 deletions(-)

std/math/log2.zig+5-2
......@@ -26,8 +26,11 @@ fn log2_workaround(x: var) -> @typeOf(x) {
2626 else => @compileError("log2 not implemented for " ++ @typeName(T)),
2727 };
2828 },
29 TypeId.IntLiteral => {
30 return @typeOf(1)(log2_int(u128, x))
29 TypeId.IntLiteral => comptime {
30 var result = 0;
31 var x_shifted = x;
32 while ({x_shifted >>= 1; x_shifted != 0}) : (result += 1) {}
33 return result;
3134 },
3235 TypeId.Int => {
3336 return log2_int(T, x);