diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-12 15:40:01 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-12 15:40:01 +0000 |
commit | d366ae5ae3cec0c636d9238a611b6cedc7419dd1 (patch) | |
tree | d9379343679f7cc33f97a987c5afb6f6d27d0d17 /libstdc++-v3 | |
parent | 80ff6494828aec552c700b031d2db3c145aee430 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/c_global/cmath | 16 | ||||
-rw-r--r-- | libstdc++-v3/include/c_std/cmath | 7 |
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 |