https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87744
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Lewis Fox from comment #0) > libc++'s > implementation of linear_congruential_engine (though libc++ incorrectly uses > Schrage's method). I haven't checked what libc++ actually does, but it gives consistent results for -m32 and -m64. However, apart from the first one, its results don't match what libstdc++'s. Libstdc++ and Boost give the same results: 864691128455147579 20120904253298372 499698276788149646 1283859513473858339 2211358525164835637 1565794316594927048 433037752037085551 3876224293909804757 842334705173512733 614226679431558764 3068544072891686009 780734117187050918 1963664848033545542 3791874062716605653 366668634810437006 1377239172204792920 1808622055437870614 464217244571328665 2604268511046649463 2831603438105397950 3223716036697852745 784694016100218461 1453099037541982349 2259076772827085306 2590915097279144408 3831773502251465123 320081643915990134 2376324005742734684 2037587339862127157 893313058057432898 118956510249458009 973816490706440657 2982490375421836301 1236945357523402079 3905294429470053119 2304284986302062495 2454379621599061616 1553811809817066890 2904663527490058979 2904663527490058979 2904663527490058979 2904663527490058979 2904663527490058979 2904663527490058979 2904663527490058979 etc. Libc++ gets stuck oscillating between two values right away: 864691128455147579 1965622972376959002 4035225266123976763 1965622972376959002 4035225266123976763 1965622972376959002 4035225266123976763 1965622972376959002 4035225266123976763 1965622972376959002 4035225266123976763 1965622972376959002 4035225266123976763 1965622972376959002