From: mdw Date: Sun, 25 Jun 2000 12:59:02 +0000 (+0000) Subject: (mpx_udiv): Fix bug in quotient digit estimation. X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/commitdiff_plain/ce76ff166af224efbeadc7beaa6fdfd4b222c63b (mpx_udiv): Fix bug in quotient digit estimation. --- diff --git a/mpx.c b/mpx.c index 36b424c..7f0b25a 100644 --- a/mpx.c +++ b/mpx.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: mpx.c,v 1.7 1999/12/22 15:49:07 mdw Exp $ + * $Id: mpx.c,v 1.8 2000/06/25 12:59:02 mdw Exp $ * * Low-level multiprecision arithmetic * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: mpx.c,v $ + * Revision 1.8 2000/06/25 12:59:02 mdw + * (mpx_udiv): Fix bug in quotient digit estimation. + * * Revision 1.7 1999/12/22 15:49:07 mdw * New function for division by a small integer. * @@ -824,20 +827,18 @@ void mpx_udiv(mpw *qv, mpw *qvl, mpw *rv, mpw *rvl, { mpd yh = (mpd)d * q; - mpd yl = (mpd)dd * q; + mpd yy = (mpd)dd * q; + mpw yl; - if (yl > MPW_MAX) { - yh += yl >> MPW_BITS; - yl &= MPW_MAX; - } + if (yy > MPW_MAX) + yh += yy >> MPW_BITS; + yl = MPW(yy); while (yh > rh || (yh == rh && yl > rrr)) { q--; yh -= d; - if (yl < dd) { - yh++; - yl += MPW_MAX; - } + if (yl < dd) + yh--; yl -= dd; } }