diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2016-01-20 17:44:58 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2016-01-20 17:44:58 +0000 |
commit | 3f93466af47bdb6e88d24fcda7a3c76be3d173e4 (patch) | |
tree | faad6b3806cd5122961417f5bca75100bf71f3b6 /libstdc++-v3 | |
parent | cd8e73dc676e966ba6e9d9f4cbb0d69506d3a542 (diff) | |
download | gcc-3f93466af47bdb6e88d24fcda7a3c76be3d173e4.zip gcc-3f93466af47bdb6e88d24fcda7a3c76be3d173e4.tar.gz gcc-3f93466af47bdb6e88d24fcda7a3c76be3d173e4.tar.bz2 |
Add C++11 <cmath> overloads to the global namespace
PR libstdc++/60401
* include/c_compatibility/math.h (acosh, asinh, atanh, acbrt,
copysign, erf, erfc, exp2, expm1, fdim, fma, fmax, fmin, hypot, ilogb,
lgamma, llrint, llround, log1p, log2, logb, lrint, lround, nearbyint,
nextafter, nexttoward, remainder, remquo, rint, round, scalbln, scalbn,
tgamma, trunc) [__cplusplus >= 201103L && _GLIBCXX_USE_C99_MATH_TR1]:
Add using declarations.
* testsuite/26_numerics/headers/cmath/60401.cc: New.
From-SVN: r232627
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/c_compatibility/math.h | 37 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc | 68 |
3 files changed, 114 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b78a2f7..577490b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,14 @@ 2016-01-20 Jonathan Wakely <jwakely@redhat.com> + PR libstdc++/60401 + * include/c_compatibility/math.h (acosh, asinh, atanh, acbrt, + copysign, erf, erfc, exp2, expm1, fdim, fma, fmax, fmin, hypot, ilogb, + lgamma, llrint, llround, log1p, log2, logb, lrint, lround, nearbyint, + nextafter, nexttoward, remainder, remquo, rint, round, scalbln, scalbn, + tgamma, trunc) [__cplusplus >= 201103L && _GLIBCXX_USE_C99_MATH_TR1]: + Add using declarations. + * testsuite/26_numerics/headers/cmath/60401.cc: New. + PR libstdc++/69386 * include/c_global/ccomplex: Ensure C++ language linkage. * include/c_global/cmath: Likewise. diff --git a/libstdc++-v3/include/c_compatibility/math.h b/libstdc++-v3/include/c_compatibility/math.h index 67f5ef1..d1fe75d 100644 --- a/libstdc++-v3/include/c_compatibility/math.h +++ b/libstdc++-v3/include/c_compatibility/math.h @@ -74,5 +74,42 @@ using std::islessgreater; using std::isunordered; #endif +#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99_MATH_TR1) +using std::acosh; +using std::asinh; +using std::atanh; +using std::cbrt; +using std::copysign; +using std::erf; +using std::erfc; +using std::exp2; +using std::expm1; +using std::fdim; +using std::fma; +using std::fmax; +using std::fmin; +using std::hypot; +using std::ilogb; +using std::lgamma; +using std::llrint; +using std::llround; +using std::log1p; +using std::log2; +using std::logb; +using std::lrint; +using std::lround; +using std::nearbyint; +using std::nextafter; +using std::nexttoward; +using std::remainder; +using std::remquo; +using std::rint; +using std::round; +using std::scalbln; +using std::scalbn; +using std::tgamma; +using std::trunc; +#endif // C++11 && _GLIBCXX_USE_C99_MATH_TR1 + #endif #endif diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc new file mode 100644 index 0000000..a6be94a --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc @@ -0,0 +1,68 @@ +// Copyright (C) 2016 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// PR libstdc++/60401 + +#include <math.h> + +namespace test +{ + template<typename T> + using F = T*; + + F<float(float)>abs = ::abs; + +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + F<float(float)> acosh = ::acosh; + F<float(float)> asinh = ::asinh; + F<float(float)> atanh = ::atanh; + F<float(float)> cbrt = ::cbrt; + F<float(float, float)> copysign = ::copysign; + F<float(float)> erf = ::erf; + F<float(float)> erfc = ::erfc; + F<float(float)> exp2 = ::exp2; + F<float(float)> expm1 = ::expm1; + F<float(float, float)> fdim = ::fdim; + F<float(float, float, float)> fma = ::fma; + F<float(float, float)> fmax = ::fmax; + F<float(float, float)> fmin = ::fmin; + F<float(float, float)> hypot = ::hypot; + F<int(float)> ilogb = ::ilogb; + F<float(float)> lgamma = ::lgamma; + F<long long(float)> llrint = ::llrint; + F<long long(float)> llround = ::llround; + F<float(float)> log1p = ::log1p; + F<float(float)> log2 = ::log2; + F<float(float)> logb = ::logb; + F<long(float)> lrint = ::lrint; + F<long(float)> lround = ::lround; + F<float(float)> nearbyint = ::nearbyint; + F<float(float, float)> nextafter = ::nextafter; + F<float(float, long double)> nexttoward = ::nexttoward; + F<float(float, float)> remainder = ::remainder; + F<float(float, float, int*)> remquo = ::remquo; + F<float(float)> rint = ::rint; + F<float(float)> round = ::round; + F<float(float, long)> scalbln = ::scalbln; + F<float(float, int)> scalbn = ::scalbn; + F<float(float)> tgamma = ::tgamma; + F<float(float)> trunc = ::trunc; +#endif +} |