Use countl_zero in bigint

This commit is contained in:
Victor Zverovich 2024-09-29 16:57:29 -07:00
parent b9ec48d9ca
commit db06b0df87

View File

@ -2831,10 +2831,8 @@ class bigint {
FMT_CONSTEXPR20 void assign_pow10(int exp) {
FMT_ASSERT(exp >= 0, "");
if (exp == 0) return *this = 1;
// Find the top bit.
int bitmask = 1;
while (exp >= bitmask) bitmask <<= 1;
bitmask >>= 1;
int bitmask = 1 << (num_bits<unsigned>() -
countl_zero(static_cast<uint32_t>(exp)) - 1);
// pow(10, exp) = pow(5, exp) * pow(2, exp). First compute pow(5, exp) by
// repeated squaring and multiplication.
*this = 5;