diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-04-03 17:35:03 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-04-03 17:35:03 +0000 |
commit | 220840331015de3cc6eb10cb1888ceb2e5b59b53 (patch) | |
tree | 9bf3689d705adb1822a53521a97686ffb9199dc0 /cmp2.c | |
parent | 936a10ece85d5885bcd3d7b79e17b2db1763324d (diff) | |
download | mpfr-220840331015de3cc6eb10cb1888ceb2e5b59b53.tar.gz |
fixed bug when diff_exp >= BITS_PER_MP_LIMB
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1049 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'cmp2.c')
-rw-r--r-- | cmp2.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -126,18 +126,23 @@ mpfr_cmp2 (mpfr_srcptr b, mpfr_srcptr c) /* now result is res + (low(b) < low(c)) */ while (bn>=0 && (cn>=0 || lastc)) { - cc = lastc; - if (cn >= 0) + if (diff_exp >= BITS_PER_MP_LIMB) + diff_exp -= BITS_PER_MP_LIMB; + else { - cc += cp[cn] >> diff_exp; - if (diff_exp) lastc = cp[cn] << (BITS_PER_MP_LIMB - diff_exp); + cc = lastc; + if (cn >= 0) + { + cc += cp[cn] >> diff_exp; + if (diff_exp) lastc = cp[cn] << (BITS_PER_MP_LIMB - diff_exp); + } + else + lastc = 0; + cn--; } - else - lastc = 0; if (bp[bn] != cc) return res + (bp[bn] < cc); bn--; - cn--; } if (bn < 0) |