diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2015-02-25 11:51:34 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2015-02-25 11:51:34 +0000 |
commit | 9a709e9e09601fe96c95215a561d82ca7e14f19f (patch) | |
tree | 08d8c7e46d79a638c5aae32e6c80aa3f4af1754a | |
parent | 0b0deffc045948c4f9380289328f9e0c3c6680cb (diff) | |
download | mpfr-9a709e9e09601fe96c95215a561d82ca7e14f19f.tar.gz |
Updated value coverage checking for mpfr_sum.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/new-sum@9317 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | src/mpfr-impl.h | 2 | ||||
-rw-r--r-- | src/sum.c | 4 | ||||
-rw-r--r-- | tests/tsum.c | 16 |
3 files changed, 12 insertions, 10 deletions
diff --git a/src/mpfr-impl.h b/src/mpfr-impl.h index 66c56afbd..0caec6f18 100644 --- a/src/mpfr-impl.h +++ b/src/mpfr-impl.h @@ -2093,7 +2093,7 @@ __MPFR_DECLSPEC void mpfr_mpz_clear _MPFR_PROTO((mpz_ptr)); extern "C" { #endif -__MPFR_DECLSPEC extern int __gmpfr_cov_sum_tmd[MPFR_RND_MAX][2][2][3]; +__MPFR_DECLSPEC extern int __gmpfr_cov_sum_tmd[MPFR_RND_MAX][2][2][3][2]; #if defined (__cplusplus) } @@ -37,7 +37,7 @@ VL: This is very different: */ #ifdef MPFR_COV_CHECK -int __gmpfr_cov_sum_tmd[MPFR_RND_MAX][2][2][3] = { 0 }; +int __gmpfr_cov_sum_tmd[MPFR_RND_MAX][2][2][3][2] = { 0 }; #endif /* Update minexp after detecting a potential integer overflow in extreme @@ -897,7 +897,7 @@ sum_aux (mpfr_ptr sum, mpfr_ptr *const x, unsigned long n, mpfr_rnd_t rnd, MPFR_LOG_MSG (("[Step 8] tmd=%d rbit=%d sst=%d\n", tmd, (int) rbit, sst)); - MPFR_COV_SET (sum_tmd[(int) rnd][tmd-1][rbit][sst+1]); + MPFR_COV_SET (sum_tmd[(int) rnd][tmd-1][rbit][sst+1][pos]); inex = MPFR_IS_LIKE_RNDD (rnd, pos ? 1 : -1) ? (sst ? -1 : 0) : diff --git a/tests/tsum.c b/tests/tsum.c index 4c243c425..73cadb2ca 100644 --- a/tests/tsum.c +++ b/tests/tsum.c @@ -457,19 +457,21 @@ static void check_coverage (void) { #ifdef MPFR_COV_CHECK - int r, i, j, k; + int r, i, j, k, p; int err = 0; for (r = 0; r < MPFR_RND_MAX; r++) for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) for (k = 0; k < 3; k++) - if (!__gmpfr_cov_sum_tmd[r][i][j][k]) - { - printf ("TMD not tested on %s, tmd=%d, rbit=%d, sst=%d\n", - mpfr_print_rnd_mode ((mpfr_rnd_t) r), i+1, j, k-1); - err = 1; - } + for (p = 0; p < 2; p++) + if (!__gmpfr_cov_sum_tmd[r][i][j][k][p]) + { + printf ("TMD not tested on %s, tmd=%d, rbit=%d, sst=%d, %s\n", + mpfr_print_rnd_mode ((mpfr_rnd_t) r), i+1, j, k-1, + p ? "positive" : "negative"); + err = 1; + } if (err) exit (1); |