awsteiner / o2scl

Object-oriented Scientific Computing Library
https://awsteiner.org/code/o2scl
GNU General Public License v3.0
35 stars 14 forks source link

Version 0.929: Test suite `poly_ts` fails #37

Open badshah400 opened 4 months ago

badshah400 commented 4 months ago

When trying to build RPM packages for openSUSE for o2scl version 0.929, we find that the following test fails due to not achieving the right tolerance:

make[3]: Entering directory '/home/abuild/rpmbuild/BUILD/o2scl-0.929/src/other'
./poly_ts > poly.scr
terminate called after throwing an instance of 'o2scl::exc_exception'
  what():  Error efailed in file ../../include/o2scl/poly.h at line 2990.
  Failed to compute with requested accuracy in cubic_real_coeff_multip::solve_rc_tol_err().
/usr/bin/bash: line 1: 25292 Aborted                 ./poly_ts > poly.scr
make[3]: *** [Makefile:1290: poly.scr] Error 134

Here is the data saved to src/other/poly.scr:

~> cat src/other/poly.scr
Quadratics with real coefficients and complex roots:
type                   Avg 1      Avg 2      Max 1      Max 2      time
quad_rc_gsl          : 2.3517e-16 3.1221e-16 1.4211e-14 2.0097e-14 1.6234e-02
quad_rc_gsl2         : 2.3517e-16 3.1221e-16 1.4211e-14 2.0097e-14 1.6169e-02 0
quad_c_std           : 5.1644e-16 5.5661e-16 2.2737e-13 2.2737e-13 3.3117e-02 0
poly_rc_gsl          : 2.0418e-16 4.5500e-16 2.1610e-14 3.1776e-14 2.0474e-02
quad_rc_gsl2_ld      : 9.9053e-20 9.7123e-20 6.9929e-18 9.8131e-18 4.7641e-02 0
quad_c_std_ld        : 1.7869e-19 1.7159e-19 1.1102e-16 1.1102e-16 8.2897e-02 0
quad_rc_gsl2_50      : 6.0556e-51 5.1753e-51 3.4478e-49 4.8382e-49 2.7319e+00 0
quad_c_std_50        : 1.1775e-50 1.0350e-50 5.4738e-48 5.4738e-48 4.1879e+00 0

Quadratics with real coefficients and complex roots -
 coefficients of odd powers small:
type                   Avg 1      Avg 2      Max 1      Max 2      time
quad_rc_gsl          : 2.0806e-16 3.4872e-16 7.1054e-15 1.3874e-14 1.6155e-02
quad_rc_gsl2         : 2.0806e-16 3.4872e-16 7.1054e-15 1.3874e-14 1.6119e-02 0
quad_c_std           : 2.2868e-16 3.4554e-16 7.1210e-15 1.0049e-14 3.3229e-02 0
poly_rc_gsl          : 1.9372e-16 3.5558e-16 4.2809e-15 1.2809e-14 2.0383e-02
quad_rc_gsl2_ld      : 8.6350e-20 1.2926e-19 3.4694e-18 4.9065e-18 4.7592e-02 0
quad_c_std_ld        : 9.3372e-20 1.2653e-19 3.4694e-18 4.9065e-18 8.2949e-02 0
quad_rc_gsl2_50      : 2.9078e-51 3.4692e-51 1.7106e-49 2.4191e-49 2.8965e+00 0
quad_c_std_50        : 2.9950e-51 3.3830e-51 1.7106e-49 2.4191e-49 4.3574e+00 0

Quadratic with complex coefficients and complex roots:
type                   Avg 1      Avg 2      Max 1      Max 2      time
quad_c_std           : 2.5619e-16 3.8935e-16 1.8310e-15 3.9346e-15 7.2059e-01
quad_c_std_ld        : 1.2292e-19 1.8890e-19 9.0224e-19 1.7074e-18 1.7338e+00
quad_c_std_50        : 6.1443e-51 9.3556e-51 4.5984e-50 9.7547e-50 1.3301e+02

Cubics with real coefficients and complex roots:
type                   Avg 1      Avg 2      Max 1      Max 2      time
cubic_rc_cern        : 5.2872e-14 3.6966e-14 1.8779e-09 5.9518e-11 3.2610e-02 10
cubic_rc_gsl         : 4.5183e-16 9.7081e-16 7.5528e-15 3.1598e-14 2.6397e-02
cubic_rc_gsl2        : 4.5727e-16 9.6994e-16 8.4055e-15 3.1598e-14 2.7485e-02 8
cubic_rc_mp          : 1.6156e-16 5.4804e-16 9.9301e-16 1.9548e-14 1.8167e+00 8
cubic_c_std          : 7.1600e-12 1.2402e-11 3.1992e-08 5.5411e-08 7.1792e-02 12154
poly_rc_gsl          : 1.4479e-15 3.1171e-15 9.4734e-15 9.7312e-14 5.6769e-02
cubic_rc_cern_ld     : 2.3790e-11 1.8145e-17 2.4334e-07 3.3941e-14 1.4488e-01 8
cubic_rc_gsl2_ld     : 2.2162e-19 4.7579e-19 3.4762e-18 1.4800e-17 1.0503e-01 42

A list of used compilers/libraries in case it helps:

Thanks in advance.

awsteiner commented 4 months ago

Is this leap or tumbleweed or something else? Also, just out of curiosity, what version of boost is this? These multiprecision parts depend heavily on Boost...

awsteiner commented 4 months ago

I'm going to have to spend some time on this to figure out what's really going on, but in the mean time if you just use -DO2SCL_FAST_TEST then I think it will skip the test that is failing for you.

badshah400 commented 4 months ago

Is this leap or tumbleweed or something else? Also, just out of curiosity, what version of boost is this? These multiprecision parts depend heavily on Boost...

This is on Tumbleweed, using boost 1.85. Have not got around to testing on Leap yet. Thanks for looking into it.

badshah400 commented 4 months ago

Can confirm that passing "-DO2SCL_FAST_TEST" works (but see issue #38).

awsteiner commented 4 months ago

Even though -DO2SCL_FAST_TEST works, I want to look into more details about why it fails, so I'll leave this open for now...

awsteiner commented 4 months ago

In v0.929.2, all the OpenSUSE-associated actions now succeed. I added O2SCL_OPENSUSE and O2SCL_OPENSUSE_I386 flags to remove the tests which weren't passing. This obviously isn't a fix, so I won't close the issue, but at least this lets me know how it might be addressed in the future.