(mpx_udiv): Fix bug in quotient digit estimation.
authormdw <mdw>
Sun, 25 Jun 2000 12:59:02 +0000 (12:59 +0000)
committermdw <mdw>
Sun, 25 Jun 2000 12:59:02 +0000 (12:59 +0000)
mpx.c

diff --git a/mpx.c b/mpx.c
index 36b424c..7f0b25a 100644 (file)
--- 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;
        }
       }