summaryrefslogtreecommitdiff
path: root/cmp2.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-04-03 17:35:03 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-04-03 17:35:03 +0000
commit220840331015de3cc6eb10cb1888ceb2e5b59b53 (patch)
tree9bf3689d705adb1822a53521a97686ffb9199dc0 /cmp2.c
parent936a10ece85d5885bcd3d7b79e17b2db1763324d (diff)
downloadmpfr-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.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/cmp2.c b/cmp2.c
index f59e7685c..aeb8f7c78 100644
--- a/cmp2.c
+++ b/cmp2.c
@@ -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)