public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/60441] New: Incorrect textual representation for std::mersenne_twister_engine
@ 2014-03-06 8:49 koherde at hotmail dot com
2023-05-23 12:14 ` [Bug libstdc++/60441] " redi at gcc dot gnu.org
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: koherde at hotmail dot com @ 2014-03-06 8:49 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441
Bug ID: 60441
Summary: Incorrect textual representation for
std::mersenne_twister_engine
Product: gcc
Version: 4.8.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: koherde at hotmail dot com
The textual representation of std::mersenne_twister_engine should consist of n
values (n being the state size). libstdc++ uses a textual representation that
consists of n+1 values.
----------------------------------
#include <iostream>
#include <random>
#include <sstream>
int main()
{
std::mt19937 r;
std::stringstream ss;
ss << r;
int valueCount = 0;
std::uint32_t val;
while (ss >> val)
{
++valueCount;
}
std::cout << r.state_size << std::endl;
std::cout << valueCount << std::endl;
}
----------------------------------
Output:
624
625
Expected output:
624
624
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug libstdc++/60441] Incorrect textual representation for std::mersenne_twister_engine
2014-03-06 8:49 [Bug libstdc++/60441] New: Incorrect textual representation for std::mersenne_twister_engine koherde at hotmail dot com
@ 2023-05-23 12:14 ` redi at gcc dot gnu.org
2023-05-23 13:40 ` redi at gcc dot gnu.org
2023-05-30 11:21 ` redi at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: redi at gcc dot gnu.org @ 2023-05-23 12:14 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed|2018-08-07 00:00:00 |2023-5-23
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
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;
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug libstdc++/60441] Incorrect textual representation for std::mersenne_twister_engine
2014-03-06 8:49 [Bug libstdc++/60441] New: Incorrect textual representation for std::mersenne_twister_engine koherde at hotmail dot com
2023-05-23 12:14 ` [Bug libstdc++/60441] " redi at gcc dot gnu.org
@ 2023-05-23 13:40 ` redi at gcc dot gnu.org
2023-05-30 11:21 ` redi at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: redi at gcc dot gnu.org @ 2023-05-23 13:40 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
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.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug libstdc++/60441] Incorrect textual representation for std::mersenne_twister_engine
2014-03-06 8:49 [Bug libstdc++/60441] New: Incorrect textual representation for std::mersenne_twister_engine koherde at hotmail dot com
2023-05-23 12:14 ` [Bug libstdc++/60441] " redi at gcc dot gnu.org
2023-05-23 13:40 ` redi at gcc dot gnu.org
@ 2023-05-30 11:21 ` redi at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: redi at gcc dot gnu.org @ 2023-05-30 11:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60441
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
We have the same problem with std::subtract_with_carry_engine.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-05-30 11:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-06 8:49 [Bug libstdc++/60441] New: Incorrect textual representation for std::mersenne_twister_engine koherde at hotmail dot com
2023-05-23 12:14 ` [Bug libstdc++/60441] " redi at gcc dot gnu.org
2023-05-23 13:40 ` redi at gcc dot gnu.org
2023-05-30 11:21 ` redi at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).