cmath (fmod(_Tp, _Up)): Add.
authorPaolo Carlini <paolo.carlini@oracle.com>
Fri, 12 Aug 2011 15:40:01 +0000 (15:40 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 12 Aug 2011 15:40:01 +0000 (15:40 +0000)
2011-08-12  Paolo Carlini  <paolo.carlini@oracle.com>

* include/c_global/cmath (fmod(_Tp, _Up)): Add.
* include/c_std/cmath: Likewise.

From-SVN: r177698

libstdc++-v3/ChangeLog
libstdc++-v3/include/c_global/cmath
libstdc++-v3/include/c_std/cmath

index c52b84912f27e0cd2507fef200a0a31f2d0a6ea9..587ddd5c16a571b1a788a892185bdd729029fcac 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-12  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * include/c_global/cmath (fmod(_Tp, _Up)): Add.
+       * include/c_std/cmath: Likewise.
+
 2011-08-11  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/std/future: constexpr functions are implicitly inline.
index 1eeded8efe18b277b4815ba51cdf2ca9923f7efa..6711d90caed3a20dda52abd8a3fca1b983cb287b 100644 (file)
@@ -282,6 +282,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   fmod(long double __x, long double __y)
   { return __builtin_fmodl(__x, __y); }
 
+  template<typename _Tp, typename _Up>
+    inline _GLIBCXX_CONSTEXPR
+    typename __gnu_cxx::__promote_2<
+    typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
+                                   && __is_arithmetic<_Up>::__value,
+                                   _Tp>::__type, _Up>::__type
+    fmod(_Tp __x, _Up __y)
+    {
+      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
+      return fmod(__type(__x), __type(__y));
+    }
+
   using ::frexp;
 
   inline _GLIBCXX_CONSTEXPR float
@@ -313,8 +325,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline _GLIBCXX_CONSTEXPR
     typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                     double>::__type
-  ldexp(_Tp __x, int __exp)
-  { return __builtin_ldexp(__x, __exp); }
+    ldexp(_Tp __x, int __exp)
+    { return __builtin_ldexp(__x, __exp); }
 
   using ::log;
 
index 13eef40840216cfeb226c1b0ed25f966a52114fd..c367fceed6251250d23f765dbbd177db45df9b33 100644 (file)
@@ -268,6 +268,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   fmod(long double __x, long double __y)
   { return __builtin_fmodl(__x, __y); }
 
+  template<typename _Tp, typename _Up>
+    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value
+                                          && __is_integer<_Up>::__value, 
+                                          double>::__type
+    fmod(_Tp __x, _Up __y)
+    { return __builtin_fmod(__x, __y); }
+
   using ::frexp;
 
   inline float