Hi Jonathan, > This adds the new 3D std::hypot() functions. This implementation seems > to be faster than the naïve sqrt(x*x + y*y + z*z) implementation, or > hypot(hypot(x, y), z), and should be a bit more accurate at very large > or very small values due to reducing the arguments by the largest one. > Improvements welcome though, as this is not my forte. > > The test might not be very good, but tests some small integer values > and some other values where accuracy is lost for one or other of the > alternative implementations mentioned above. If this FAILs for some > 32-bit targets we might need to adjust the tolerances or the > dg-options. > > * doc/xml/manual/status_cxx2017.xml: Update status. > * include/c_global/cmath (hypot): Add three-dimensional overloads. > * testsuite/26_numerics/headers/cmath/hypot.cc: New. > > Tested powerpc64le-linux and x86_64-linux, committed to trunk.
the new test currently FAILs on Solaris 12 (both SPARC and x86): +FAIL: 26_numerics/headers/cmath/hypot.cc (test for excess errors) +WARNING: 26_numerics/headers/cmath/hypot.cc compilation failed to produce execu table Excess errors: /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc:38: error: no matching function for call to 'hypot(double, double, double)' /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc:38: error: no matching function for call to 'hypot(double, double, double)' /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc:38: error: template argument 2 is invalid and many more. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University