diff --git a/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp b/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp index e47ff9644d35d074d19edeff8acf050e3033f316..6e61267b7fa34b61fbd861537387931f9397942d 100644 --- a/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp +++ b/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp @@ -9,33 +9,14 @@ class FFSpecializationTest : public testing::Test { protected: - void run_test(IFormFactor* p0, IFormFactor* p1, double eps, double qmag1, double qmag2) + void run_test(IFormFactor* ff0, IFormFactor* ff1, double eps, double qmag1, double qmag2) { - int failures = formfactorTest::run_test2_for_many_q( - [&](C3 q, bool report) -> double { return test_ff_eq(q, p0, p1, eps, report); }, qmag1, - qmag2, eps); + int failures = formfactorTest::run_test3_for_many_q( + [&](C3 q) -> complex_t { return ff0->formfactor(q); }, + [&](C3 q) -> complex_t { return ff1->formfactor(q); }, + qmag1, qmag2, eps); EXPECT_EQ(failures, 0); } - -private: - double test_ff_eq(C3 q, IFormFactor* p0, IFormFactor* p1, double eps, bool report) - { - const complex_t f0 = p0->formfactor(q); - const complex_t f1 = p1->formfactor(q); - const double avge = (std::abs(f0) + std::abs(f1)) / 2; - const double abserr = std::max(fabs(real(f0) - real(f1)), fabs(imag(f0) - imag(f1))); - const double result = abserr / avge * std::min(1., eps * avge / 1e-16); - if (report) { - std::cout << "Deviation at q = " << q << ":\n"; - std::cout << " Re(f0) = " << std::setprecision(16) << real(f0) - << ", Im(f0) = " << imag(f0) << "\n"; - std::cout << " Re(f1) = " << real(f1) << ", Im(f1) = " << imag(f1) << "\n"; - std::cout << " abs dev = " << std::setprecision(8) << abserr - << ", rel dev = " << abserr / avge << ", score = " << result - << ", limit = " << eps << "\n"; - } - return result; - } }; const double eps_polyh = 6e-12; // Linux 3e-12, relaxed for Win