diff --git a/lib/std/math/big/int.zig b/lib/std/math/big/int.zig index 12817c0e2b..91a8d37813 100644 --- a/lib/std/math/big/int.zig +++ b/lib/std/math/big/int.zig @@ -18,11 +18,14 @@ const debug_safety = false; /// Returns the number of limbs needed to store `scalar`, which must be a /// primitive integer value. pub fn calcLimbLen(scalar: anytype) usize { - if (scalar == 0) { - return 1; - } + const T = @TypeOf(scalar); + const max_scalar = switch (@typeInfo(T)) { + .Int => maxInt(T), + .ComptimeInt => scalar, + else => @compileError("parameter must be a primitive integer type"), + }; - const w_value = std.math.absCast(scalar); + const w_value = std.math.absCast(max_scalar); return @divFloor(@intCast(Limb, math.log2(w_value)), limb_bits) + 1; }