projects
/
u
/
mdw
/
catacomb
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
01b1f53
)
(mpx_udiv): Fix bug in quotient digit estimation.
author
mdw
<mdw>
Sun, 25 Jun 2000 12:59:02 +0000
(12:59 +0000)
committer
mdw
<mdw>
Sun, 25 Jun 2000 12:59:02 +0000
(12:59 +0000)
mpx.c
patch
|
blob
|
blame
|
history
diff --git
a/mpx.c
b/mpx.c
index
36b424c
..
7f0b25a
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.
8 2000/06/25 12:59:02
mdw Exp $
*
* Low-level multiprecision arithmetic
*
*
* Low-level multiprecision arithmetic
*
@@
-30,6
+30,9
@@
/*----- Revision history --------------------------------------------------*
*
* $Log: mpx.c,v $
/*----- 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.
*
* 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 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;
- }
+ if (yl < dd)
+ yh--;
yl -= dd;
}
}
yl -= dd;
}
}