https://gcc.gnu.org/g:306f4aef140910bfc803fe9c894b12615b35aac7
commit r17-2483-g306f4aef140910bfc803fe9c894b12615b35aac7 Author: Tomasz KamiĆski <[email protected]> Date: Fri Jul 17 11:49:30 2026 +0200 libstdc++: Use __FLT_EVAL_METHOD__ to enable test for piecewise distributions. As pointed out by Jakub, the use of excess precision is most likely source of differences. libstdc++-v3/ChangeLog: * testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc: Guard test_custom invocations with __FLT_EVAL_METHOD__ macros. * testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc: Likewise. Diff: --- .../piecewise_constant_distribution/operators/serialize2.cc | 8 ++++++-- .../random/piecewise_linear_distribution/operators/serialize2.cc | 9 +++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc index dae9f4aaf34f..9d6eae9459fd 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc @@ -100,10 +100,14 @@ int main() test_default<double>(); test_default<long double>(); -#ifdef __x86_64__ +#if __FLT_EVAL_METHOD__ >= 0 +# if __FLT_EVAL_METHOD__ == 0 test_custom<float>(); -#endif +# endif +# if __FLT_EVAL_METHOD__ != 2 test_custom<double>(); +# endif test_custom<long double>(); +#endif return 0; } diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc index 36157dea4e0f..f86ed47873d4 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc @@ -103,10 +103,15 @@ int main() test_default<double>(); test_default<long double>(); +#if __FLT_EVAL_METHOD__ >= 0 +# if __FLT_EVAL_METHOD__ == 0 test_custom<float>(); -#ifdef __x86_64__ +# endif +# if __FLT_EVAL_METHOD__ != 2 test_custom<double>(); -#endif +# endif test_custom<long double>(); +#endif + return 0; }
