aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-01-20 17:44:58 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2016-01-20 17:44:58 +0000
commit3f93466af47bdb6e88d24fcda7a3c76be3d173e4 (patch)
treefaad6b3806cd5122961417f5bca75100bf71f3b6 /libstdc++-v3
parentcd8e73dc676e966ba6e9d9f4cbb0d69506d3a542 (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--libstdc++-v3/include/c_compatibility/math.h37
-rw-r--r--libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc68
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
+}