summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2015-02-25 11:51:34 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2015-02-25 11:51:34 +0000
commit9a709e9e09601fe96c95215a561d82ca7e14f19f (patch)
tree08d8c7e46d79a638c5aae32e6c80aa3f4af1754a
parent0b0deffc045948c4f9380289328f9e0c3c6680cb (diff)
downloadmpfr-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.h2
-rw-r--r--src/sum.c4
-rw-r--r--tests/tsum.c16
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)
}
diff --git a/src/sum.c b/src/sum.c
index a4ea7960a..bb236eb43 100644
--- a/src/sum.c
+++ b/src/sum.c
@@ -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);