aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2010-02-22 18:41:55 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-02-22 18:41:55 +0000
commit26504a0f8c9fcd068b61baec7de7c3a719ae3190 (patch)
treeaa527ef31931509d56b1de3c9cff9302a7ab4856
parent15d81a3c31b52f5f883a1b2d25b74877c9ed0304 (diff)
downloadgcc-26504a0f8c9fcd068b61baec7de7c3a719ae3190.zip
gcc-26504a0f8c9fcd068b61baec7de7c3a719ae3190.tar.gz
gcc-26504a0f8c9fcd068b61baec7de7c3a719ae3190.tar.bz2
complex (arg): Use std::signbit only when available.
2010-02-22 Paolo Carlini <paolo.carlini@oracle.com> * include/tr1_impl/complex (arg): Use std::signbit only when available. From-SVN: r156972
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/tr1_impl/complex4
2 files changed, 9 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 664f57d..d60096a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
2010-02-22 Paolo Carlini <paolo.carlini@oracle.com>
+ * include/tr1_impl/complex (arg): Use std::signbit only when
+ available.
+
+2010-02-22 Paolo Carlini <paolo.carlini@oracle.com>
+
* include/bits/functional_hash.h (hash<string>, hash<wstring>,
hash<u16string>, hash<u32string>, hash<error_code>): Move, per
DR 1182 to...
diff --git a/libstdc++-v3/include/tr1_impl/complex b/libstdc++-v3/include/tr1_impl/complex
index ac420bf..aae4a13 100644
--- a/libstdc++-v3/include/tr1_impl/complex
+++ b/libstdc++-v3/include/tr1_impl/complex
@@ -311,8 +311,12 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
arg(_Tp __x)
{
typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
+#if (_GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC)
return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L)
: __type();
+#else
+ return std::arg(std::complex<__type>(__x));
+#endif
}
template<typename _Tp>