[Bug libstdc++/69295] [6 Regression] New special math function failures

2016-01-27 Thread redi at gcc dot gnu.org
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

2016-01-27 Thread redi at gcc dot gnu.org
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

2016-01-27 Thread redi at gcc dot gnu.org
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

2016-01-27 Thread jakub at gcc dot gnu.org
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

2016-01-27 Thread redi at gcc dot gnu.org
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

2016-01-22 Thread jakub at gcc dot gnu.org
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

2016-01-18 Thread jakub at gcc dot gnu.org
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

2016-01-18 Thread redi at gcc dot gnu.org
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

2016-01-17 Thread pinskia at gcc dot gnu.org
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

2016-01-17 Thread redi at gcc dot gnu.org
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

2016-01-15 Thread jakub at gcc dot gnu.org
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

2016-01-15 Thread redi at gcc dot gnu.org
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

2016-01-15 Thread redi at gcc dot gnu.org
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

2016-01-15 Thread dje at gcc dot gnu.org
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.