Skip to content

Commit c3e11b4

Browse files
authored
Fix tests on MacOS with -Ofast -ffast-math (#43)
On latest MacOS `long double` is mapped to `double`.
1 parent d3e493a commit c3e11b4

File tree

8 files changed

+57
-47
lines changed

8 files changed

+57
-47
lines changed

test/test_Cl2.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -249,17 +249,17 @@ TEST_CASE("test_real_fixed_values")
249249
}
250250

251251
if (std::abs(x128 - 2*pi128) > 1e-10L) {
252-
CHECK_CLOSE(cl128_poly , cl128_expected, 6*eps128);
252+
CHECK_CLOSE(cl128_poly , cl128_expected, 10*eps128);
253253
} else {
254254
CHECK_CLOSE(cl128_poly , cl128_expected, 50*eps128);
255255
}
256256
if (std::abs(x128 - 2*pi128) > 1e-10L) {
257-
CHECK_CLOSE(cl128_poly_c, cl128_expected, 6*eps128);
257+
CHECK_CLOSE(cl128_poly_c, cl128_expected, 10*eps128);
258258
} else {
259259
CHECK_CLOSE(cl128_poly_c, cl128_expected, 50*eps128);
260260
}
261261
if (std::abs(x128 - 2*pi128) > 1e-10L) {
262-
CHECK_CLOSE(cl128_koelbig, cl128_expected, 6*eps128);
262+
CHECK_CLOSE(cl128_koelbig, cl128_expected, 10*eps128);
263263
} else {
264264
CHECK_CLOSE(cl128_koelbig, cl128_expected, 50*eps128);
265265
}

test/test_Cl3.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ TEST_CASE("test_real_fixed_values")
121121
#endif
122122
CHECK_CLOSE(cl64_pade , cl64_expected , 2*eps64 );
123123
CHECK_CLOSE(cl64_wu , cl64_expected , 2*eps64 );
124-
CHECK_CLOSE(cl128_poly , cl128_expected, 5*eps128);
125-
CHECK_CLOSE(cl128_poly_c, cl128_expected, 5*eps128);
124+
CHECK_CLOSE(cl128_poly , cl128_expected, 10*eps128);
125+
CHECK_CLOSE(cl128_poly_c, cl128_expected, 10*eps128);
126126
CHECK_CLOSE(cl128_li3 , cl128_expected, 2*eps128);
127127

128128
// test symmetries

test/test_Cl5.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ TEST_CASE("test_real_fixed_values")
115115
CHECK_CLOSE(cl64_poly_f , cl64_expected , 2*eps64 );
116116
#endif
117117
CHECK_CLOSE(cl128_li , cl128_expected, 4*eps128);
118-
CHECK_CLOSE(cl128_poly , cl128_expected, 7*eps128);
119-
CHECK_CLOSE(cl128_poly_c, cl128_expected, 7*eps128);
118+
CHECK_CLOSE(cl128_poly , cl128_expected, 20*eps128);
119+
CHECK_CLOSE(cl128_poly_c, cl128_expected, 10*eps128);
120120

121121
// test symmetries
122122
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")
137137
CHECK_CLOSE( poly_Cl5_fortran(-x64 ), cl64_expected , 10*eps64);
138138
#endif
139139

140-
CHECK_CLOSE(polylogarithm::Cl5(x128 + 2*M_PIL), cl128_expected, 10*eps128);
141-
CHECK_CLOSE(polylogarithm::Cl5(x128 - 2*M_PIL), cl128_expected, 10*eps128);
142-
CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 10*eps128);
143-
CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 10*eps128);
140+
CHECK_CLOSE(polylogarithm::Cl5(x128 + 2*M_PIL), cl128_expected, 20*eps128);
141+
CHECK_CLOSE(polylogarithm::Cl5(x128 - 2*M_PIL), cl128_expected, 20*eps128);
142+
CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 20*eps128);
143+
CHECK_CLOSE(polylogarithm::Cl5(-x128 ), cl128_expected, 20*eps128);
144144
}
145145
}
146146
}

test/test_Li2.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ TEST_CASE("test_special_values")
253253

254254
CHECK_CLOSE(36.*Li2(0.5) - 36.*Li2(0.25)
255255
- 12.*Li2(1./8.) + 6.*Li2(1./64.),
256-
pi2, 2*eps);
256+
pi2, 10*eps);
257257

258258
{
259259
// special point wher z^2 < epsilon
@@ -452,13 +452,15 @@ TEST_CASE("test_overflow")
452452
#endif
453453
}
454454

455-
const Data<long double> data128[] = {
456-
{{1e4000L, 1.0L}, {-4.241518159395905038804045816392180824073e7L, 28935.13764966185924996018620104716451L}, eps128}
457-
};
455+
if (std::numeric_limits<long double>::max_exponent10 >= 4000) {
456+
const Data<long double> data128[] = {
457+
{{1e4000L, 1.0L}, {-4.241518159395905038804045816392180824073e7L, 28935.13764966185924996018620104716451L}, eps128}
458+
};
458459

459-
for (const auto& d : data128) {
460-
CHECK_CLOSE_COMPLEX(Li2(d.z), d.li_expected, d.eps);
461-
CHECK_CLOSE_COMPLEX(poly_Li2(d.z), d.li_expected, d.eps);
460+
for (const auto& d : data128) {
461+
CHECK_CLOSE_COMPLEX(Li2(d.z), d.li_expected, d.eps);
462+
CHECK_CLOSE_COMPLEX(poly_Li2(d.z), d.li_expected, d.eps);
463+
}
462464
}
463465
}
464466

@@ -759,7 +761,7 @@ TEST_CASE("test_complex_random_values")
759761
CHECK_CLOSE_COMPLEX(li2, li2_tsil , 10*eps);
760762
CHECK_CLOSE_COMPLEX(li2, li2_hdecay, 10*eps);
761763
CHECK_CLOSE_COMPLEX(li2, li2_hollik, 10*eps);
762-
CHECK_CLOSE_COMPLEX(li2, li2_lt , 2*eps);
764+
CHECK_CLOSE_COMPLEX(li2, li2_lt , 10*eps);
763765
CHECK_CLOSE_COMPLEX(li2, li2_sherpa, 10*eps);
764766
CHECK_CLOSE_COMPLEX(li2, li2_spheno, 10*eps);
765767
}

test/test_Li3.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,15 @@ TEST_CASE("test_overflow")
231231
#endif
232232
}
233233

234-
const Data<long double> data128[] = {
235-
{{1e4000L, 1.0L}, {-1.3021939960597718633480560501920418668419e11L, 1.3325123323168432929414697360944689612e8L}, eps128}
236-
};
237-
238-
for (const auto& d : data128) {
239-
CHECK_CLOSE_COMPLEX(Li3(d.z), d.li_expected, d.eps);
240-
CHECK_CLOSE_COMPLEX(poly_Li3(d.z), d.li_expected, d.eps);
234+
if (std::numeric_limits<long double>::max_exponent10 >= 4000) {
235+
const Data<long double> data128[] = {
236+
{{1e4000L, 1.0L}, {-1.3021939960597718633480560501920418668419e11L, 1.3325123323168432929414697360944689612e8L}, eps128}
237+
};
238+
239+
for (const auto& d : data128) {
240+
CHECK_CLOSE_COMPLEX(Li3(d.z), d.li_expected, d.eps);
241+
CHECK_CLOSE_COMPLEX(poly_Li3(d.z), d.li_expected, d.eps);
242+
}
241243
}
242244
}
243245

test/test_Li4.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,15 @@ TEST_CASE("test_overflow")
166166
#endif
167167
}
168168

169-
const Data<long double> data128[] = {
170-
{{1e4000L, 1.0L}, {-2.998411785811730437806291599010045237778e14L, 4.090964043497988426223363565328465514e11L}, eps128}
171-
};
172-
173-
for (const auto& d : data128) {
174-
CHECK_CLOSE_COMPLEX(Li4(d.z), d.li_expected, d.eps);
175-
CHECK_CLOSE_COMPLEX(poly_Li4(d.z), d.li_expected, d.eps);
169+
if (std::numeric_limits<long double>::max_exponent10 >= 4000) {
170+
const Data<long double> data128[] = {
171+
{{1e4000L, 1.0L}, {-2.998411785811730437806291599010045237778e14L, 4.090964043497988426223363565328465514e11L}, eps128}
172+
};
173+
174+
for (const auto& d : data128) {
175+
CHECK_CLOSE_COMPLEX(Li4(d.z), d.li_expected, d.eps);
176+
CHECK_CLOSE_COMPLEX(poly_Li4(d.z), d.li_expected, d.eps);
177+
}
176178
}
177179
}
178180

test/test_Li5.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,15 @@ TEST_CASE("test_overflow")
145145
#endif
146146
}
147147

148-
const Data<long double> data128[] = {
149-
{{1e4000L, 1.0L}, {-5.523276910915025884712078063195501148879e17L, 9.419792822533112833122424859594537172e14L}, eps128}
150-
};
151-
152-
for (const auto& d : data128) {
153-
CHECK_CLOSE_COMPLEX(Li5(d.z), d.li_expected, d.eps);
154-
CHECK_CLOSE_COMPLEX(poly_Li5(d.z), d.li_expected, d.eps);
148+
if (std::numeric_limits<long double>::max_exponent10 >= 4000) {
149+
const Data<long double> data128[] = {
150+
{{1e4000L, 1.0L}, {-5.523276910915025884712078063195501148879e17L, 9.419792822533112833122424859594537172e14L}, eps128}
151+
};
152+
153+
for (const auto& d : data128) {
154+
CHECK_CLOSE_COMPLEX(Li5(d.z), d.li_expected, d.eps);
155+
CHECK_CLOSE_COMPLEX(poly_Li5(d.z), d.li_expected, d.eps);
156+
}
155157
}
156158
}
157159

test/test_Li6.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,15 @@ TEST_CASE("test_overflow")
145145
#endif
146146
}
147147

148-
const Data<long double> data128[] = {
149-
{{1e4000L, 1.0L}, {-8.478540098238822566033321355282680660651e20L, 1.7351899625805641348387419061716509476e18L}, eps128}
150-
};
151-
152-
for (const auto& d : data128) {
153-
CHECK_CLOSE_COMPLEX(Li6(d.z), d.li_expected, d.eps);
154-
CHECK_CLOSE_COMPLEX(poly_Li6(d.z), d.li_expected, d.eps);
148+
if (std::numeric_limits<long double>::max_exponent10 >= 4000) {
149+
const Data<long double> data128[] = {
150+
{{1e4000L, 1.0L}, {-8.478540098238822566033321355282680660651e20L, 1.7351899625805641348387419061716509476e18L}, eps128}
151+
};
152+
153+
for (const auto& d : data128) {
154+
CHECK_CLOSE_COMPLEX(Li6(d.z), d.li_expected, d.eps);
155+
CHECK_CLOSE_COMPLEX(poly_Li6(d.z), d.li_expected, d.eps);
156+
}
155157
}
156158
}
157159

0 commit comments

Comments
 (0)