https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112593

            Bug ID: 112593
           Summary: FAIL:
                    26_numerics/headers/cmath/equivalent_functions.cc on
                    Solaris 11.3
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: testsuite-fail
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---
            Target: sparc-sun-solaris2.11

/export/home/jwakely/src/gcc/libstdc++-v3/testsuite/26_numerics/headers/cmath/equivalent_functions.cc:197:
void test_long_double_overload(): Assertion 'std::cosh(x) == std::coshl(x)'
failed.


std::cosh is provided by
/export/home/jwakely/build/gcc/include-fixed/iso/math_iso.h which has:

namespace std {
...
extern long double __coshl(long double);
...
inline long double cosh(long double __X) { return __coshl(__X); }


std::coshl is provided by libstdc++'s <cmath> (since r14-5341-g0b880466e910b4)
which does:

using std::coshl;

That finds ::coshl from /export/home/jwakely/build/gcc/include-fixed/math.h:

extern long double coshl (long double);


That means that Solaris provides both ::coshl and also std::__coshl, and they
return different values for cosh(1.0):

std::cosh(x)    = 1.5430806348152437784779056207570615
std::__coshl(x) = 1.5430806348152437784779056207570615
std::coshl(x)   = 1.5430806348152437784779056207570617

The first two match, as expected because std::cosh just calls std::__coshl.

I don't know why Solaris provides two different implementations of coshl.

Reply via email to