From 46e2f2d283025ba0f6b69e426d2ceb7f30550639 Mon Sep 17 00:00:00 2001 From: zimmerma Date: Tue, 4 Sep 2018 13:33:35 +0000 Subject: [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 --- src/round_prec.c | 2 +- tests/tcan_round.c | 6 ++++-- 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); } } -- cgit v1.2.1