diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2000-02-03 08:41:35 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2000-02-03 08:41:35 +0000 |
commit | 7261b7af438ba131f0a511835864dcbc21575c1a (patch) | |
tree | 36ddcb2f76c4edd89cde48c8d0aa1af1e9a36bdf /div_ui.c | |
parent | 1b0f55edf2c21f37608a7598540d6650240e6cec (diff) | |
download | mpfr-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.c | 3 |
1 files changed, 1 insertions, 2 deletions
@@ -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) { |