summaryrefslogtreecommitdiff
path: root/add.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-26 10:55:36 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-26 10:55:36 +0000
commitff1165a8e7ae0d3dd61d29ebc95f25c0fecb10fb (patch)
treec400091040d17b2cdce583e71488714382dc4d8f /add.c
parent49075b07a8b729460c10636469dfb6a927bfc6e9 (diff)
downloadmpfr-ff1165a8e7ae0d3dd61d29ebc95f25c0fecb10fb.tar.gz
fixed pb with exact results not detected (ck was < 0)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1406 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'add.c')
-rw-r--r--add.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/add.c b/add.c
index 6e75eac51..9af0c3543 100644
--- a/add.c
+++ b/add.c
@@ -294,8 +294,11 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
if (difs)
{
cc = cprev << (BITS_PER_MP_LIMB - difs);
- cprev = cp[--ck];
- cc += cprev >> difs;
+ if (ck > 0)
+ {
+ cprev = cp[--ck];
+ cc += cprev >> difs;
+ }
}
else
cc = cp[--ck];
@@ -338,9 +341,9 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
if (ck < 0)
goto c_read;
cc = cprev << (BITS_PER_MP_LIMB - difs);
- if (--ck >= 0)
+ if (ck > 0)
{
- cprev = cp[ck];
+ cprev = cp[--ck];
cc += cprev >> difs;
}
}
@@ -389,6 +392,7 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
fb = 1;
goto rounding;
}
+ MPFR_ASSERTN(ck >= 0);
while (ck)
{
if (cp[--ck])