From e3226cb2785e4f03c1741d19373b11a53c6d7917 Mon Sep 17 00:00:00 2001 From: lkcl Date: Wed, 27 Apr 2022 12:44:32 +0100 Subject: [PATCH] --- openpower/sv/biginteger/analysis.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openpower/sv/biginteger/analysis.mdwn b/openpower/sv/biginteger/analysis.mdwn index 43f06e850..6aebf874b 100644 --- a/openpower/sv/biginteger/analysis.mdwn +++ b/openpower/sv/biginteger/analysis.mdwn @@ -362,13 +362,15 @@ the digits are 32 bit and, special-casing the overflow, a 64/32 divide is suffic // Compute estimate qhat of q[j] from top 2 digits uint64_t dig2 = ((uint64_t)un[j + n] << 32) | un[j + n - 1]; if (un[j+n] >= vn[n-1]) { - // rhat can be bigger than 32-bit when the division overflows, + // rhat can be bigger than 32-bit when the division overflows + qhat = UINT32_MAX; rhat = dig2 - (uint64_t)UINT32_MAX * vn[n - 1]; } else { qhat = dig2 / vn[n - 1]; // 64/32 divide rhat = dig2 % vn[n - 1]; // 64/32 modulo } // use 3rd-from-top digit to obtain better accuracy + b = 1UL<<32; while (rhat < b || qhat * vn[n - 2] > b * rhat + un[j + n - 2]) { qhat = qhat - 1; rhat = rhat + vn[n - 1]; -- 2.30.2