From: Jerry Quinn Date: Sat, 22 Mar 2003 04:57:46 +0000 (+0000) Subject: re PR libstdc++/5730 (complex::norm() -- huge slowdown from egcs-2.91.66) X-Git-Tag: releases/gcc-3.4.0~7741 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=442c0874ea857deaed375a626f848ac97a4fbcaf;p=thirdparty%2Fgcc.git re PR libstdc++/5730 (complex::norm() -- huge slowdown from egcs-2.91.66) 2003-03-21 Jerry Quinn PR libstdc++/5730 * include/bits/c++config (_GLIBCPP_FAST_MATH): Define. * include/std/std_complex.h (norm): Use faster, less accurate computation for builtin float types under --fast-math. From-SVN: r64701 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 71793c6d0656..30583b0d7adc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2003-03-21 Jerry Quinn + + PR libstdc++/5730 + * include/bits/c++config (_GLIBCPP_FAST_MATH): Define. + * include/std/std_complex.h (norm): Use faster, + less accurate computation for builtin float types under --fast-math. + 2003-03-21 Magnus Fromreide * testsuite/testsuite_hooks.h: Fix warning nits. diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index f833b41c44a2..829fe7eca261 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -87,6 +87,13 @@ #error __USE_MALLOC should never be defined. Read the release notes. #endif +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +#define _GLIBCPP_FAST_MATH 1 +#else +#define _GLIBCPP_FAST_MATH 0 +#endif + // The remainder of the prewritten config is mostly automatic; all the // user hooks are listed above. diff --git a/libstdc++-v3/include/std/std_complex.h b/libstdc++-v3/include/std/std_complex.h index 955a12ca2494..87e4bcb4d26b 100644 --- a/libstdc++-v3/include/std/std_complex.h +++ b/libstdc++-v3/include/std/std_complex.h @@ -456,7 +456,7 @@ namespace std inline _Tp norm(const complex<_Tp>& __z) { - return _Norm_helper<__is_floating<_Tp>::_M_type>::_S_do_it(__z); + return _Norm_helper<__is_floating<_Tp>::_M_type && !_GLIBCPP_FAST_MATH>::_S_do_it(__z); } template