int test_error_vec (const DualVector& random_vec, const Vector& error_vec) { using std::max; using std::fabs; typedef typename ValueType<Vector>::type Scalar; static const Scalar tol = std::numeric_limits<Scalar>::epsilon() * 10; Scalar max_abs_error = 0; for (unsigned int i=0; i != error_vec.size(); ++i) { max_abs_error = max(max_abs_error, fabs(error_vec.raw_at(i))); // Handle NaNs properly. Testing max_abs_error for NaN is // impossible because IEEE sucks: // https://en.wikipedia.org/wiki/IEEE_754_revision#min_and_max if (max_abs_error > tol || error_vec[i] != error_vec[i]) { std::cerr << "Value " << random_vec.raw_at(i) << "\nError " << error_vec.raw_at(i) << "\nTol " << tol << std::endl; return 1; } } return 0; }
int test_error_vec (const DualVector& random_vec, const Vector& error_vec) { using std::max; using std::fabs; typedef typename ValueType<Vector>::type Scalar; static const Scalar tol = std::numeric_limits<Scalar>::epsilon() * 10; Scalar max_abs_error = 0; for (unsigned int i=0; i != error_vec.size(); ++i) { max_abs_error = max(max_abs_error, fabs(error_vec.raw_at(i))); if (max_abs_error > tol) { std::cerr << "Value " << random_vec.raw_at(i) << "\nError " << error_vec.raw_at(i) << "\nTol " << tol << std::endl; return 1; } } return 0; }