summaryrefslogtreecommitdiff
path: root/div_ui.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2000-02-03 08:41:35 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2000-02-03 08:41:35 +0000
commit7261b7af438ba131f0a511835864dcbc21575c1a (patch)
tree36ddcb2f76c4edd89cde48c8d0aa1af1e9a36bdf /div_ui.c
parent1b0f55edf2c21f37608a7598540d6650240e6cec (diff)
downloadmpfr-7261b7af438ba131f0a511835864dcbc21575c1a.tar.gz
fixed bug when high limb of quotient is zero
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@440 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'div_ui.c')
-rw-r--r--div_ui.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/div_ui.c b/div_ui.c
index 216afedfb..61a98a37a 100644
--- a/div_ui.c
+++ b/div_ui.c
@@ -56,8 +56,6 @@ mpfr_div_ui(y, x, u, rnd_mode)
EXP(y) = EXP(x);
if (SIGN(x)!=SIGN(y)) CHANGE_SIGN(y);
- /* save limb yp[-1] that will be used to store an extra limb of
- the quotient */
dif = yn+1-xn;
#ifdef DEBUG
printf("dif=%d u=%lu xn=%d\n",dif,u,xn);
@@ -81,6 +79,7 @@ mpfr_div_ui(y, x, u, rnd_mode)
else /* dif < 0 i.e. xn > yn */
c = mpn_divrem_1(tmp, 0, xp-dif, yn, c);
+ if (tmp[yn]==0) { tmp--; sh=0; EXP(y) -= mp_bits_per_limb; }
/* shift left to normalize */
count_leading_zeros(sh, tmp[yn]);
if (sh) {