From ea0cd6af09ff2dde54e92f8c5c95f38f2264ac39 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 9 May 2025 10:00:28 +0100 Subject: [PATCH] Coverage: try and fix up sinc_pi test. --- test/sinc_test.hpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/test/sinc_test.hpp b/test/sinc_test.hpp index 86e840e72..67fb142a7 100644 --- a/test/sinc_test.hpp +++ b/test/sinc_test.hpp @@ -60,18 +60,21 @@ BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinc_pi_complex_test, T) // A very poor test with rather large tolerance for failure. // But it does get out coverage up! // - T tolerance = std::numeric_limits::epsilon() * 20000; - - std::complex val(1, 2); - for (unsigned i = 0; i < 5; ++i) + BOOST_MATH_IF_CONSTEXPR(std::numeric_limits::is_specialized && std::numeric_limits::digits < 60) { - using mp_t = boost::multiprecision::cpp_complex_50; - val /= 3; - std::complex r1, r2; - r1 = sinc_pi(val); - r2 = static_cast>(sin(mp_t(val)) / mp_t(val)); - BOOST_CHECK_CLOSE_FRACTION(arg(r1), arg(r2), tolerance); - BOOST_CHECK_CLOSE_FRACTION(abs(r1), abs(r2), tolerance); + T tolerance = std::numeric_limits::epsilon() * 20000; + + std::complex val(1, 2); + for (unsigned i = 0; i < 5; ++i) + { + using mp_t = boost::multiprecision::cpp_complex_100; + val /= 3; + std::complex r1, r2; + r1 = sinc_pi(val); + r2 = static_cast>(sin(mp_t(val)) / mp_t(val)); + BOOST_CHECK_CLOSE_FRACTION(arg(r1), arg(r2), tolerance); + BOOST_CHECK_CLOSE_FRACTION(abs(r1), abs(r2), tolerance); + } } }