diff --git a/src/util/mpz.cpp b/src/util/mpz.cpp index c07235ab125..bdad1ddfe8f 100644 --- a/src/util/mpz.cpp +++ b/src/util/mpz.cpp @@ -2248,7 +2248,10 @@ template unsigned mpz_manager::mlog2(mpz const & a) { if (is_nonneg(a)) return 0; - if (is_small(a) && a.m_val > INT_MIN) + if (is_small(a) && a.m_val == INT_MIN) + return ::log2((unsigned)a.m_val); + + if (is_small(a)) return ::log2((unsigned)-a.m_val); #ifndef _MP_GMP static_assert(sizeof(digit_t) == 8 || sizeof(digit_t) == 4, "");