diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-08-22 15:18:06 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-08-22 15:18:06 +0000 |
commit | 0eced588b113d6e9523d6baaee8ce280dfea5add (patch) | |
tree | 543c5eabaebec20ed8367826a502938feb69f7e0 /add.c | |
parent | 8e2077640f89ebb2ef7727f7520774382e788e1e (diff) | |
download | mpfr-0eced588b113d6e9523d6baaee8ce280dfea5add.tar.gz |
"mant(c) != 1/2" test was broken.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1127 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'add.c')
-rw-r--r-- | add.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -117,11 +117,10 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp) /* c is not zero */ /* check whether mant(c)=1/2 or not */ - cc = *cp - (ONE<<(BITS_PER_MP_LIMB-1)); - if (cc==0) { - bp = cp+(MPFR_PREC(c)-1)/BITS_PER_MP_LIMB; - while (cp<bp && cc==0) cc = *++cp; - } + mp_limb_t *cp2 = cp + (cn-1); /* highest limb */ + + cc = *cp2 - MP_LIMB_T_HIGHBIT; + while (cc == 0 && cp2 > cp) cc = *--cp2; if (cc || ((ap[0] >> sh) & ONE)) goto add_one_ulp; /* mant(c) != 1/2 or mant(c) = 1/2: add 1 iff lsb(a)=1 */ |