[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 Jonathan Wakely changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #13 from Jonathan Wakely --- Should be ok now.
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #12 from Jonathan Wakely --- Author: redi Date: Wed Jan 27 15:09:38 2016 New Revision: 232879 URL: https://gcc.gnu.org/viewcvs?rev=232879&root=gcc&view=rev Log: Set FP options for failing special functions tests PR libstdc++/69295 * testsuite/ext/special_functions/hyperg/check_value.cc: Use -ffp-contract=off, and -ffloat-store to disable excess precision. * testsuite/special_functions/02_assoc_legendre/check_value.cc: Use -ffp-contract=off. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc trunk/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #11 from Jonathan Wakely --- (In reply to Jakub Jelinek from comment #10) > Does -ffloat-store help on ppc64 though? I believe that target doesn't have > excess precision... Perhaps fma is used somewhere (can you objdump -dr > check_value.exe | grep madd ?)? No idea if it is possible to disable fma on > powerpc though. You're right, it doesn't help on ppc64, and objdump shows fmadd instructions.
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #10 from Jakub Jelinek --- Does -ffloat-store help on ppc64 though? I believe that target doesn't have excess precision... Perhaps fma is used somewhere (can you objdump -dr check_value.exe | grep madd ?)? No idea if it is possible to disable fma on powerpc though.
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #9 from Jonathan Wakely --- On big-endian ppc64 ext/special_functions/hyperg/check_value.cc these tests fail: data167, toler167 on line 11579 max_abs_frac = 4.82864e-13 data171, toler171 on line 11579 max_abs_frac = 5.15741e-12 data172, toler172 on line 11579 max_abs_frac = 3.10473e-11 data173, toler173 on line 11579 max_abs_frac = 1.09304e-12 data197, toler197 on line 11579 max_abs_frac = 4.82864e-13 data201, toler201 on line 11579 max_abs_frac = 1.86001e-12 data202, toler202 on line 11579 max_abs_frac = 3.21576e-12 data203, toler203 on line 11579 max_abs_frac = 2.58658e-12 data204, toler204 on line 11579 max_abs_frac = 6.15743e-13 data206, toler206 on line 11579 max_abs_frac = 1.87073e-10 data207, toler207 on line 11579 max_abs_frac = 7.72796e-10 data208, toler208 on line 11579 max_abs_frac = 5.19491e-09 data209, toler209 on line 11579 max_abs_frac = 2.15517e-10 data231, toler231 on line 11579 max_abs_frac = 5.15741e-12 data232, toler232 on line 11579 max_abs_frac = 3.10473e-11 data233, toler233 on line 11579 max_abs_frac = 1.09304e-12 data236, toler236 on line 11579 max_abs_frac = 1.87073e-10 data237, toler237 on line 11579 max_abs_frac = 7.72796e-10 data238, toler238 on line 11579 max_abs_frac = 5.19491e-09 data239, toler239 on line 11579 max_abs_frac = 2.15517e-10 data241, toler241 on line 11579 max_abs_frac = 1.68813e-09 data242, toler242 on line 11579 max_abs_frac = 2.64594e-08 data243, toler243 on line 11579 max_abs_frac = 3.02697e-07 data244, toler244 on line 11579 max_abs_frac = 4.34529e-07 data245, toler245 on line 11579 max_abs_frac = 2.36511e-07 for special_functions/02_assoc_legendre/check_value.cc only one fails: data033, toler033 on line 1901 max_abs_frac = 2.75283e-13 Ed, we need to do something about this. Jakub asked: > Increase tolerance on the problematic subtests, or only do that conditionally > on excess precision, or avoid testing altogether for excess precision, or > force flags like -ffloat-store to avoid excess precision? I'm leaning towards adding -ffloat-store so we don't use any excess precision (since that causes the results to match the values Ed generated using GSL, presumably on x86_64).
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #8 from Jakub Jelinek --- On i686-linux, it is clearly a matter of excess precision that sometimes substantially changes the result. With -mfpmath=sse -msse2 or -ffloat-store it passes. The abs errors for various tests that fail are (first NNN in test(dataNNN, tolerNNN), then max_abs_frac, then tolerNNN), the patch I've used was: @@ -11554,7 +11554,7 @@ const double toler245 = 2.50 template void - test(const testcase_hyperg (&data)[Num], Tp toler) + test(const testcase_hyperg (&data)[Num], Tp toler, int nnn) { bool test __attribute__((unused)) = true; const Tp eps = std::numeric_limits::epsilon(); @@ -11576,256 +11576,258 @@ template max_abs_frac = std::abs(frac); } } -VERIFY(max_abs_frac < toler); +if (max_abs_frac >= toler) + __builtin_printf ("%d %a %a\n", nnn, max_abs_frac, toler); +//VERIFY(max_abs_frac < toler); } plus adjusting all the test(dataNNN, tolerNNN); calls to test(dataNNN, tolerNNN, NNN); 167 0x1.8ab4f2f1f35bcp-40 0x1.19799812dea15p-42 171 0x1.890df8f35d42ep-38 0x1.19799812dea15p-42 172 0x1.1acd4227e561bp-34 0x1.19799812dea15p-42 173 0x1.6f73999c8e5adp-40 0x1.19799812dea15p-42 197 0x1.8ab4f2f1f35bcp-40 0x1.19799812dea15p-42 201 0x1.d4e2f28348906p-39 0x1.19799812dea15p-42 202 0x1.afc3fee12aee8p-36 0x1.19799812dea15p-42 203 0x1.9f229da628598p-39 0x1.19799812dea15p-42 204 0x1.949b76928c351p-40 0x1.19799812dea15p-42 206 0x1.24585756ecfbap-33 0x1.19799812dea15p-42 207 0x1.662797d1185e5p-31 0x1.19799812dea15p-42 208 0x1.27de1e24e6ac3p-27 0x1.19799812dea15p-42 209 0x1.a0ac9ec2d7f45p-34 0x1.19799812dea15p-42 231 0x1.890df8f35d42ep-38 0x1.19799812dea15p-42 232 0x1.1acd4227e561bp-34 0x1.19799812dea15p-42 233 0x1.6f73999c8e5adp-40 0x1.19799812dea15p-42 236 0x1.24585756ecfbap-33 0x1.19799812dea15p-42 237 0x1.662797d1185e5p-31 0x1.19799812dea15p-42 238 0x1.27de1e24e6ac3p-27 0x1.19799812dea15p-42 239 0x1.a0ac9ec2d7f45p-34 0x1.19799812dea15p-42 241 0x1.67ee0388ff7a7p-27 0x1.19799812dea15p-42 242 0x1.7aa254470eb52p-26 0x1.19799812dea15p-42 243 0x1.fb4f73983f28cp-19 0x1.19799812dea15p-42 244 0x1.3b46fd92feda9p-22 0x1.19799812dea15p-42 245 0x1.58d8d7350d864p-21 0x1.19799812dea15p-42 What are the problematic tests on powerpc* (that one is not excess precision target though)? Would it be acceptable to just increase the tolerNNN values mentioned above (plus whatever powerpc needs)?
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #7 from Jakub Jelinek --- If the test is xfailed or changed to run only on targets where it succeeds, this would not be considered a regression anymore. Right now it is in some sense a regression, you get more FAILs than before.
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #6 from Jonathan Wakely --- It's arguable whether this should be marked as a regression, as it's new code and new tests, so the tests wouldn't even compile before gcc6.
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 Andrew Pinski changed: What|Removed |Added Keywords||wrong-code Target Milestone|--- |6.0
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 Jonathan Wakely changed: What|Removed |Added CC||vries at gcc dot gnu.org --- Comment #5 from Jonathan Wakely --- *** Bug 69335 has been marked as a duplicate of this bug. ***
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #4 from Jakub Jelinek --- FAIL: ext/special_functions/hyperg/check_value.cc execution test seen also on i686-linux (dunno about x86_64, that is still doing make check).
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 --- Comment #3 from Jonathan Wakely --- Apparently ext/special_functions/hyperg/check_value.cc is also failing on i686.
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 Jonathan Wakely changed: What|Removed |Added CC||emsr at gcc dot gnu.org --- Comment #2 from Jonathan Wakely --- I also see this on ppc64-linux, but not ppc64le-linux. Ed, do you know why these tests would fail on big-endian POWER targets?
[Bug libstdc++/69295] [6 Regression] New special math function failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69295 David Edelsohn changed: What|Removed |Added Target||powerpc-ibm-aix* Status|UNCONFIRMED |NEW Last reconfirmed||2016-01-15 CC||redi at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from David Edelsohn --- Confirmed.