summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-12 15:40:01 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-12 15:40:01 +0000
commitd366ae5ae3cec0c636d9238a611b6cedc7419dd1 (patch)
treed9379343679f7cc33f97a987c5afb6f6d27d0d17 /libstdc++-v3
parent80ff6494828aec552c700b031d2db3c145aee430 (diff)
downloadgcc-d366ae5ae3cec0c636d9238a611b6cedc7419dd1.tar.gz
2011-08-12 Paolo Carlini <paolo.carlini@oracle.com>
* include/c_global/cmath (fmod(_Tp, _Up)): Add. * include/c_std/cmath: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177698 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/c_global/cmath16
-rw-r--r--libstdc++-v3/include/c_std/cmath7
3 files changed, 26 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c52b84912f2..587ddd5c16a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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.
diff --git a/libstdc++-v3/include/c_global/cmath b/libstdc++-v3/include/c_global/cmath
index 1eeded8efe1..6711d90caed 100644
--- a/libstdc++-v3/include/c_global/cmath
+++ b/libstdc++-v3/include/c_global/cmath
@@ -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;
diff --git a/libstdc++-v3/include/c_std/cmath b/libstdc++-v3/include/c_std/cmath
index 13eef408402..c367fceed62 100644
--- a/libstdc++-v3/include/c_std/cmath
+++ b/libstdc++-v3/include/c_std/cmath
@@ -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