std_complex.h (log(const complex<_Tp>&)): When _GLIBCXX_USE_C99_COMPLEX, forward...
authorPaolo Carlini <pcarlini@suse.de>
Mon, 30 May 2005 22:02:30 +0000 (22:02 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 30 May 2005 22:02:30 +0000 (22:02 +0000)
2005-05-30  Paolo Carlini  <pcarlini@suse.de>

* include/std/std_complex.h (log(const complex<_Tp>&)): When
_GLIBCXX_USE_C99_COMPLEX, forward to __builtin_clog/clogf/clogl.

From-SVN: r100376

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/std_complex.h

index a572b0bfaa5d6015010896bd99b9b5668c3530f9..31357005d8938833cda25e3878b363dbe6e36466 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-30  Paolo Carlini  <pcarlini@suse.de>
+
+       * include/std/std_complex.h (log(const complex<_Tp>&)): When
+       _GLIBCXX_USE_C99_COMPLEX, forward to __builtin_clog/clogf/clogl.
+
 2005-05-28  Paolo Carlini  <pcarlini@suse.de>
 
        Revert:
index 6c1e003373035504d84eaa2b80ba002b042d8134..80020756789637d83e91d60e12e18aa0f2c15786 100644 (file)
@@ -749,7 +749,7 @@ namespace std
     __complex_log(const complex<_Tp>& __z)
     { return complex<_Tp>(log(std::abs(__z)), std::arg(__z)); }
 
-  /*
+#if _GLIBCXX_USE_C99_COMPLEX
   inline __complex__ float
   __complex_log(__complex__ float __z) { return __builtin_clogf(__z); }
 
@@ -758,14 +758,16 @@ namespace std
 
   inline __complex__ long double
   __complex_log(const __complex__ long double& __z)
-  { return __builtin_clogl(__z); } */
+  { return __builtin_clogl(__z); }
 
-  // FIXME: Currently we don't use built-ins for log() because of some
-  //        obscure user name-space issues.  So, we use the generic version
-  //        which is why we don't use __z.__rep() in the call below.
+  template<typename _Tp>
+    inline complex<_Tp>
+    log(const complex<_Tp>& __z) { return __complex_log(__z.__rep()); }
+#else
   template<typename _Tp>
     inline complex<_Tp>
     log(const complex<_Tp>& __z) { return __complex_log(__z); }
+#endif
 
   template<typename _Tp>
     inline complex<_Tp>