summaryrefslogtreecommitdiffstats
path: root/test.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-01-30 14:11:10 -0500
committerErik Schnetter <schnetter@gmail.com>2013-01-30 14:11:10 -0500
commit1552fdd1aff91a5babf40ac94fdb39db5c5573b6 (patch)
tree3e8531d945db1db64c0fba13a7f39749bde133b8 /test.cc
parent3093469cc24f519082328ee0ca814581c34a7faf (diff)
downloadvecmathlib-1552fdd1aff91a5babf40ac94fdb39db5c5573b6.zip
vecmathlib-1552fdd1aff91a5babf40ac94fdb39db5c5573b6.tar.gz
Be more verbose about failing tests
Diffstat (limited to 'test.cc')
-rw-r--r--test.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/test.cc b/test.cc
index 15ef19c..f4d1376 100644
--- a/test.cc
+++ b/test.cc
@@ -41,7 +41,7 @@ struct vecmathlib_test {
// Test each function with this many random values
static int const imax = 10000;
- // Require that 3/4 of the digits are correct
+ // Require (arbitrarily) that 3/4 of the digits are correct
static real_t constexpr accuracy = pow(realvec_t::epsilon(), R(0.75));
@@ -83,14 +83,16 @@ struct vecmathlib_test {
}
realvec_t const rvml = fvml(x);
realvec_t const dr = rstd - rvml;
- if (any(fabs(dr) >
- realvec_t(accuracy) * (fabs(rstd) + fabs(rvml) + realvec_t(1.0))))
- {
+ realvec_t const scale = fabs(rstd) + fabs(rvml) + realvec_t(1.0);
+ boolvec_t const isbad = fabs(dr) > realvec_t(accuracy) * scale;
+ if (any(isbad)) {
++ num_errors;
cout << setprecision(realvec_t::digits10+2)
<< "Error in " << func << "(" << x << "):\n"
<< " fstd(x)=" << rstd << "\n"
<< " fvml(x)=" << rvml << "\n"
+ << " rel-error(x)=" << fabs(dr) / scale << "\n"
+ << " isbad(x)=" << isbad << "\n"
<< flush;
}
}
@@ -108,14 +110,16 @@ struct vecmathlib_test {
}
realvec_t const rvml = fvml(x, y);
realvec_t const dr = rstd - rvml;
- if (any(fabs(dr) >
- realvec_t(accuracy) * (fabs(rstd) + fabs(rvml) + realvec_t(1.0))))
- {
+ realvec_t const scale = fabs(rstd) + fabs(rvml) + realvec_t(1.0);
+ boolvec_t const isbad = fabs(dr) > realvec_t(accuracy) * scale;
+ if (any(isbad)) {
++ num_errors;
cout << setprecision(realvec_t::digits10+1)
<< "Error in " << func << "(" << x << "," << y << "):\n"
<< " fstd(x,y)=" << rstd << "\n"
<< " fvml(x,y)=" << rvml << "\n"
+ << " rel-error(x,y)=" << fabs(dr) / scale << "\n"
+ << " isbad(x,y)=" << isbad << "\n"
<< flush;
}
}
OpenPOWER on IntegriCloud