From 93cfb9d117eb5f996f80a59a989ff3f56b9c7db7 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 13 Mar 2025 13:19:02 +0100 Subject: [PATCH 1/7] decrease test precision due to failure on MacOS with -Ofast -ffast-math --- test/test_Li2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_Li2.cpp b/test/test_Li2.cpp index ece1567..32e2a3a 100644 --- a/test/test_Li2.cpp +++ b/test/test_Li2.cpp @@ -253,7 +253,7 @@ TEST_CASE("test_special_values") CHECK_CLOSE(36.*Li2(0.5) - 36.*Li2(0.25) - 12.*Li2(1./8.) + 6.*Li2(1./64.), - pi2, 2*eps); + pi2, 10*eps); { // special point wher z^2 < epsilon From 3e71798fcdada8a524c5003fe13339aeef193f73 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 13 Mar 2025 13:22:36 +0100 Subject: [PATCH 2/7] decrease test precision --- test/test_Cl5.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/test_Cl5.cpp b/test/test_Cl5.cpp index 5feec5e..9e0b7da 100644 --- a/test/test_Cl5.cpp +++ b/test/test_Cl5.cpp @@ -115,8 +115,8 @@ TEST_CASE("test_real_fixed_values") CHECK_CLOSE(cl64_poly_f , cl64_expected , 2*eps64 ); #endif CHECK_CLOSE(cl128_li , cl128_expected, 4*eps128); - CHECK_CLOSE(cl128_poly , cl128_expected, 7*eps128); - CHECK_CLOSE(cl128_poly_c, cl128_expected, 7*eps128); + CHECK_CLOSE(cl128_poly , cl128_expected, 10*eps128); + CHECK_CLOSE(cl128_poly_c, cl128_expected, 10*eps128); // test symmetries if (std::abs(std::fmod(x64, 2*M_PI)) > 0.1 && std::abs(x64 - 2*M_PI) > 0.1) { @@ -137,10 +137,10 @@ TEST_CASE("test_real_fixed_values") CHECK_CLOSE( poly_Cl5_fortran(-x64 ), cl64_expected , 10*eps64); #endif - CHECK_CLOSE(polylogarithm::Cl5(x128 + 2*M_PIL), cl128_expected, 10*eps128); - CHECK_CLOSE(polylogarithm::Cl5(x128 - 2*M_PIL), cl128_expected, 10*eps128); - CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 10*eps128); - CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 10*eps128); + CHECK_CLOSE(polylogarithm::Cl5(x128 + 2*M_PIL), cl128_expected, 20*eps128); + CHECK_CLOSE(polylogarithm::Cl5(x128 - 2*M_PIL), cl128_expected, 20*eps128); + CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 20*eps128); + CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 20*eps128); } } } From 5f622561dd5eb19bbeef9f5f6d238d354ae176ba Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 13 Mar 2025 13:25:15 +0100 Subject: [PATCH 3/7] decrease test precision --- test/test_Cl5.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_Cl5.cpp b/test/test_Cl5.cpp index 9e0b7da..3bc8f4e 100644 --- a/test/test_Cl5.cpp +++ b/test/test_Cl5.cpp @@ -115,7 +115,7 @@ TEST_CASE("test_real_fixed_values") CHECK_CLOSE(cl64_poly_f , cl64_expected , 2*eps64 ); #endif CHECK_CLOSE(cl128_li , cl128_expected, 4*eps128); - CHECK_CLOSE(cl128_poly , cl128_expected, 10*eps128); + CHECK_CLOSE(cl128_poly , cl128_expected, 20*eps128); CHECK_CLOSE(cl128_poly_c, cl128_expected, 10*eps128); // test symmetries From 7d5b2e01922028bb501c633b9f8fcbb4b9000292 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 13 Mar 2025 13:26:01 +0100 Subject: [PATCH 4/7] decrease test precision --- test/test_Cl3.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_Cl3.cpp b/test/test_Cl3.cpp index a234d61..396c24b 100644 --- a/test/test_Cl3.cpp +++ b/test/test_Cl3.cpp @@ -121,8 +121,8 @@ TEST_CASE("test_real_fixed_values") #endif CHECK_CLOSE(cl64_pade , cl64_expected , 2*eps64 ); CHECK_CLOSE(cl64_wu , cl64_expected , 2*eps64 ); - CHECK_CLOSE(cl128_poly , cl128_expected, 5*eps128); - CHECK_CLOSE(cl128_poly_c, cl128_expected, 5*eps128); + CHECK_CLOSE(cl128_poly , cl128_expected, 10*eps128); + CHECK_CLOSE(cl128_poly_c, cl128_expected, 10*eps128); CHECK_CLOSE(cl128_li3 , cl128_expected, 2*eps128); // test symmetries From 69c1b112a29f40f3a3c7fae953c268c14e2f142d Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 13 Mar 2025 13:26:59 +0100 Subject: [PATCH 5/7] decrease test precision --- test/test_Cl2.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_Cl2.cpp b/test/test_Cl2.cpp index d65d88a..b4b5e45 100644 --- a/test/test_Cl2.cpp +++ b/test/test_Cl2.cpp @@ -249,17 +249,17 @@ TEST_CASE("test_real_fixed_values") } if (std::abs(x128 - 2*pi128) > 1e-10L) { - CHECK_CLOSE(cl128_poly , cl128_expected, 6*eps128); + CHECK_CLOSE(cl128_poly , cl128_expected, 10*eps128); } else { CHECK_CLOSE(cl128_poly , cl128_expected, 50*eps128); } if (std::abs(x128 - 2*pi128) > 1e-10L) { - CHECK_CLOSE(cl128_poly_c, cl128_expected, 6*eps128); + CHECK_CLOSE(cl128_poly_c, cl128_expected, 10*eps128); } else { CHECK_CLOSE(cl128_poly_c, cl128_expected, 50*eps128); } if (std::abs(x128 - 2*pi128) > 1e-10L) { - CHECK_CLOSE(cl128_koelbig, cl128_expected, 6*eps128); + CHECK_CLOSE(cl128_koelbig, cl128_expected, 10*eps128); } else { CHECK_CLOSE(cl128_koelbig, cl128_expected, 50*eps128); } From a1a439d8ba74c70b2cb0cb098a9aeb788b3742e6 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 13 Mar 2025 13:47:46 +0100 Subject: [PATCH 6/7] test overflow with 10^4000 only if number of digits does match --- test/test_Li2.cpp | 16 +++++++++------- test/test_Li3.cpp | 16 +++++++++------- test/test_Li4.cpp | 16 +++++++++------- test/test_Li5.cpp | 16 +++++++++------- test/test_Li6.cpp | 16 +++++++++------- 5 files changed, 45 insertions(+), 35 deletions(-) diff --git a/test/test_Li2.cpp b/test/test_Li2.cpp index 32e2a3a..43a74c5 100644 --- a/test/test_Li2.cpp +++ b/test/test_Li2.cpp @@ -452,13 +452,15 @@ TEST_CASE("test_overflow") #endif } - const Data data128[] = { - {{1e4000L, 1.0L}, {-4.241518159395905038804045816392180824073e7L, 28935.13764966185924996018620104716451L}, eps128} - }; - - for (const auto& d : data128) { - CHECK_CLOSE_COMPLEX(Li2(d.z), d.li_expected, d.eps); - CHECK_CLOSE_COMPLEX(poly_Li2(d.z), d.li_expected, d.eps); + if (std::numeric_limits::max_exponent10 >= 4000) { + const Data data128[] = { + {{1e4000L, 1.0L}, {-4.241518159395905038804045816392180824073e7L, 28935.13764966185924996018620104716451L}, eps128} + }; + + for (const auto& d : data128) { + CHECK_CLOSE_COMPLEX(Li2(d.z), d.li_expected, d.eps); + CHECK_CLOSE_COMPLEX(poly_Li2(d.z), d.li_expected, d.eps); + } } } diff --git a/test/test_Li3.cpp b/test/test_Li3.cpp index 90a827c..eb2ca03 100644 --- a/test/test_Li3.cpp +++ b/test/test_Li3.cpp @@ -231,13 +231,15 @@ TEST_CASE("test_overflow") #endif } - const Data data128[] = { - {{1e4000L, 1.0L}, {-1.3021939960597718633480560501920418668419e11L, 1.3325123323168432929414697360944689612e8L}, eps128} - }; - - for (const auto& d : data128) { - CHECK_CLOSE_COMPLEX(Li3(d.z), d.li_expected, d.eps); - CHECK_CLOSE_COMPLEX(poly_Li3(d.z), d.li_expected, d.eps); + if (std::numeric_limits::max_exponent10 >= 4000) { + const Data data128[] = { + {{1e4000L, 1.0L}, {-1.3021939960597718633480560501920418668419e11L, 1.3325123323168432929414697360944689612e8L}, eps128} + }; + + for (const auto& d : data128) { + CHECK_CLOSE_COMPLEX(Li3(d.z), d.li_expected, d.eps); + CHECK_CLOSE_COMPLEX(poly_Li3(d.z), d.li_expected, d.eps); + } } } diff --git a/test/test_Li4.cpp b/test/test_Li4.cpp index c8478f5..13b0559 100644 --- a/test/test_Li4.cpp +++ b/test/test_Li4.cpp @@ -166,13 +166,15 @@ TEST_CASE("test_overflow") #endif } - const Data data128[] = { - {{1e4000L, 1.0L}, {-2.998411785811730437806291599010045237778e14L, 4.090964043497988426223363565328465514e11L}, eps128} - }; - - for (const auto& d : data128) { - CHECK_CLOSE_COMPLEX(Li4(d.z), d.li_expected, d.eps); - CHECK_CLOSE_COMPLEX(poly_Li4(d.z), d.li_expected, d.eps); + if (std::numeric_limits::max_exponent10 >= 4000) { + const Data data128[] = { + {{1e4000L, 1.0L}, {-2.998411785811730437806291599010045237778e14L, 4.090964043497988426223363565328465514e11L}, eps128} + }; + + for (const auto& d : data128) { + CHECK_CLOSE_COMPLEX(Li4(d.z), d.li_expected, d.eps); + CHECK_CLOSE_COMPLEX(poly_Li4(d.z), d.li_expected, d.eps); + } } } diff --git a/test/test_Li5.cpp b/test/test_Li5.cpp index 616aaa0..a4fd552 100644 --- a/test/test_Li5.cpp +++ b/test/test_Li5.cpp @@ -145,13 +145,15 @@ TEST_CASE("test_overflow") #endif } - const Data data128[] = { - {{1e4000L, 1.0L}, {-5.523276910915025884712078063195501148879e17L, 9.419792822533112833122424859594537172e14L}, eps128} - }; - - for (const auto& d : data128) { - CHECK_CLOSE_COMPLEX(Li5(d.z), d.li_expected, d.eps); - CHECK_CLOSE_COMPLEX(poly_Li5(d.z), d.li_expected, d.eps); + if (std::numeric_limits::max_exponent10 >= 4000) { + const Data data128[] = { + {{1e4000L, 1.0L}, {-5.523276910915025884712078063195501148879e17L, 9.419792822533112833122424859594537172e14L}, eps128} + }; + + for (const auto& d : data128) { + CHECK_CLOSE_COMPLEX(Li5(d.z), d.li_expected, d.eps); + CHECK_CLOSE_COMPLEX(poly_Li5(d.z), d.li_expected, d.eps); + } } } diff --git a/test/test_Li6.cpp b/test/test_Li6.cpp index 7208c4f..422fccd 100644 --- a/test/test_Li6.cpp +++ b/test/test_Li6.cpp @@ -145,13 +145,15 @@ TEST_CASE("test_overflow") #endif } - const Data data128[] = { - {{1e4000L, 1.0L}, {-8.478540098238822566033321355282680660651e20L, 1.7351899625805641348387419061716509476e18L}, eps128} - }; - - for (const auto& d : data128) { - CHECK_CLOSE_COMPLEX(Li6(d.z), d.li_expected, d.eps); - CHECK_CLOSE_COMPLEX(poly_Li6(d.z), d.li_expected, d.eps); + if (std::numeric_limits::max_exponent10 >= 4000) { + const Data data128[] = { + {{1e4000L, 1.0L}, {-8.478540098238822566033321355282680660651e20L, 1.7351899625805641348387419061716509476e18L}, eps128} + }; + + for (const auto& d : data128) { + CHECK_CLOSE_COMPLEX(Li6(d.z), d.li_expected, d.eps); + CHECK_CLOSE_COMPLEX(poly_Li6(d.z), d.li_expected, d.eps); + } } } From 5771019ae5aa78b58e51653689b61ac3f2995515 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 13 Mar 2025 13:52:06 +0100 Subject: [PATCH 7/7] reduce test precision --- test/test_Li2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_Li2.cpp b/test/test_Li2.cpp index 43a74c5..ff4b359 100644 --- a/test/test_Li2.cpp +++ b/test/test_Li2.cpp @@ -761,7 +761,7 @@ TEST_CASE("test_complex_random_values") CHECK_CLOSE_COMPLEX(li2, li2_tsil , 10*eps); CHECK_CLOSE_COMPLEX(li2, li2_hdecay, 10*eps); CHECK_CLOSE_COMPLEX(li2, li2_hollik, 10*eps); - CHECK_CLOSE_COMPLEX(li2, li2_lt , 2*eps); + CHECK_CLOSE_COMPLEX(li2, li2_lt , 10*eps); CHECK_CLOSE_COMPLEX(li2, li2_sherpa, 10*eps); CHECK_CLOSE_COMPLEX(li2, li2_spheno, 10*eps); }