aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2025-08-19 17:29:12 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2025-08-21 10:04:45 +0100
commitcf88ed5bf20c86ca38da19358ff79a34adb4d0b5 (patch)
treee1a059dc3a5889d610062448b249d1ec266f018f
parent889a1352a2c48320c402aa614c67fe5236ac08ad (diff)
downloadgcc-cf88ed5bf20c86ca38da19358ff79a34adb4d0b5.zip
gcc-cf88ed5bf20c86ca38da19358ff79a34adb4d0b5.tar.gz
gcc-cf88ed5bf20c86ca38da19358ff79a34adb4d0b5.tar.bz2
libstdc++: Fix std::numeric_limits<__float128>::max_digits10 [PR121374]
When I added this explicit specialization in r14-1433-gf150a084e25eaa I used the wrong value for the number of mantissa digits (I used 112 instead of 113). Then when I refactored it in r14-1582-g6261d10521f9fd I used the value calculated from the incorrect value (35 instead of 36). libstdc++-v3/ChangeLog: PR libstdc++/121374 * include/std/limits (numeric_limits<__float128>::max_digits10): Fix value. * testsuite/18_support/numeric_limits/128bit.cc: Check value.
-rw-r--r--libstdc++-v3/include/std/limits2
-rw-r--r--libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc5
2 files changed, 6 insertions, 1 deletions
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index 3567a32..49ce7c9 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -2128,7 +2128,7 @@ __glibcxx_float_n(128)
static _GLIBCXX_USE_CONSTEXPR int digits = 113;
static _GLIBCXX_USE_CONSTEXPR int digits10 = 33;
#if __cplusplus >= 201103L
- static constexpr int max_digits10 = 35;
+ static constexpr int max_digits10 = 36;
#endif
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc
index b13d837..bf12b65 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc
@@ -4,6 +4,11 @@
#if __SIZEOF_FLOAT128__
__extension__ template class std::numeric_limits<__float128>;
+
+# if __cplusplus >= 201103L
+static_assert( std::numeric_limits<__float128>::max_digits10 == 36,
+ "PR libstdc++/121374" );
+# endif
#endif
#if __SIZEOF_INT128__