projects
/
u
/
mdw
/
catacomb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Version bump.
[u/mdw/catacomb]
/
mpx.c
diff --git
a/mpx.c
b/mpx.c
index
36b424c
..
327699c
100644
(file)
--- a/
mpx.c
+++ b/
mpx.c
@@
-1,6
+1,6
@@
/* -*-c-*-
*
/* -*-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
*
*
* Low-level multiprecision arithmetic
*
@@
-30,6
+30,12
@@
/*----- Revision history --------------------------------------------------*
*
* $Log: mpx.c,v $
/*----- 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.
*
* Revision 1.7 1999/12/22 15:49:07 mdw
* New function for division by a small integer.
*
@@
-824,21
+830,19
@@
void mpx_udiv(mpw *qv, mpw *qvl, mpw *rv, mpw *rvl,
{
mpd yh = (mpd)d * q;
{
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;
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);
}
}
}
}