/* -*-c-*-
*
- * $Id: mpx.c,v 1.7 1999/12/22 15:49:07 mdw Exp $
+ * $Id: mpx.c,v 1.9 2000/06/26 07:52:50 mdw Exp $
*
* Low-level multiprecision arithmetic
*
/*----- Revision history --------------------------------------------------*
*
* $Log: mpx.c,v $
+ * Revision 1.9 2000/06/26 07:52:50 mdw
+ * Portability fix for the bug fix.
+ *
+ * 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.
*
{
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;
- }
- yl -= dd;
+ if (yl < dd)
+ yh--;
+ yl = MPW(yl - dd);
}
}