summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2018-09-04 13:33:35 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2018-09-04 13:33:35 +0000
commit46e2f2d283025ba0f6b69e426d2ceb7f30550639 (patch)
treedafd9166872cba72020fa700d7a07b322ffa6451
parenta3ed239845c428804c9bd99105f672c8ad735375 (diff)
downloadmpfr-46e2f2d283025ba0f6b69e426d2ceb7f30550639.tar.gz
[src/round_prec.c] fixed for 16-bit limb
[tests/tcan_round.c] improve error message git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@13121 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r--src/round_prec.c2
-rw-r--r--tests/tcan_round.c6
2 files changed, 5 insertions, 3 deletions
diff --git a/src/round_prec.c b/src/round_prec.c
index fb14bb518..9c13d8dcb 100644
--- a/src/round_prec.c
+++ b/src/round_prec.c
@@ -383,7 +383,7 @@ mpfr_can_round_raw (const mp_limb_t *bp, mp_size_t bn, int neg, mpfr_exp_t err,
cy = mpn_add_1 (tmp + bn - k, bp + bn - k, k, MPFR_LIMB_ONE << s);
/* propagate carry up to most significant limb */
for (tn = 0; tn + 1 < k1 && cy != 0; tn ++)
- cy = ~bp[bn + tn] == 0;
+ cy = MPFR_LIMB(~bp[bn + tn]) == 0;
if (cy == 0 && err == prec)
{
res = 0;
diff --git a/tests/tcan_round.c b/tests/tcan_round.c
index 6829947d2..a514d2aca 100644
--- a/tests/tcan_round.c
+++ b/tests/tcan_round.c
@@ -265,12 +265,14 @@ check_can_round (void)
{
printf ("Error in check_can_round on:\n"
"precx=%d, precy=%d, i=%d, err=%d, "
- "rnd1=%s, rnd2=%s: got %d\n",
+ "rnd1=%s, rnd2=%s: expected %d, got %d\n",
precx, precy, i, err,
mpfr_print_rnd_mode ((mpfr_rnd_t) rnd1),
mpfr_print_rnd_mode ((mpfr_rnd_t) rnd2),
- got);
+ expected, got);
printf ("x="); mpfr_dump (x);
+ printf ("yinf="); mpfr_dump (yinf);
+ printf ("ysup="); mpfr_dump (ysup);
exit (1);
}
}