[Bug libstdc++/60441] Incorrect textual representation for std::mersenne_twister_engine

2023-05-30 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441

--- Comment #3 from Jonathan Wakely  ---
We have the same problem with std::subtract_with_carry_engine.

[Bug libstdc++/60441] Incorrect textual representation for std::mersenne_twister_engine

2023-05-23 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441

--- Comment #2 from Jonathan Wakely  ---
Ignore that, it doesn't work. Due to the way we've implemented the mersenne
twister state, we really do need to remember how much of the state has been
used already, which is why we serialize the _M_p index into the textual
representation.

[Bug libstdc++/60441] Incorrect textual representation for std::mersenne_twister_engine

2023-05-23 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441

Jonathan Wakely  changed:

   What|Removed |Added

   Last reconfirmed|2018-08-07 00:00:00 |2023-5-23

--- Comment #1 from Jonathan Wakely  ---
The fix is quite simple, but it breaks compatibility between releases:

diff --git a/libstdc++-v3/include/bits/random.tcc
b/libstdc++-v3/include/bits/random.tcc
index 24a5987db0d..8f53d5c5f53 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -486,9 +486,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
   __os.fill(__space);

-  for (size_t __i = 0; __i < __n; ++__i)
+  for (size_t __i = __x._M_p; __i < __n; ++__i)
+   __os << __x._M_x[__i] << __space;
+  for (size_t __i = 0; __i < __x._M_p; ++__i)
__os << __x._M_x[__i] << __space;
-  __os << __x._M_p;

   __os.flags(__flags);
   __os.fill(__fill);
@@ -512,7 +513,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION

   for (size_t __i = 0; __i < __n; ++__i)
__is >> __x._M_x[__i];
-  __is >> __x._M_p;
+  __x._M_p = 0;

   __is.flags(__flags);
   return __is;

[Bug libstdc++/60441] Incorrect textual representation for std::mersenne_twister_engine

2018-08-07 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-08-07
 Ever confirmed|0   |1