diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-26 10:55:36 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-26 10:55:36 +0000 |
commit | ff1165a8e7ae0d3dd61d29ebc95f25c0fecb10fb (patch) | |
tree | c400091040d17b2cdce583e71488714382dc4d8f /add.c | |
parent | 49075b07a8b729460c10636469dfb6a927bfc6e9 (diff) | |
download | mpfr-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.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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]) |