re PR libstdc++/51795 (linear_congruential_engine doesn't work correctly)
authorMarc Glisse <marc.glisse@inria.fr>
Sun, 29 Apr 2012 23:36:09 +0000 (01:36 +0200)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sun, 29 Apr 2012 23:36:09 +0000 (23:36 +0000)
commitcf48c255197fb4aae6bc1acc2eba31f13a3f44b3
tree9adf35dcdbd754a14ae986576a07b43387e41d70
parent143a1ce16cee1ade7a09266a3a0190ee2e826734
re PR libstdc++/51795 (linear_congruential_engine doesn't work correctly)

2012-04-29  Marc Glisse  <marc.glisse@inria.fr>
    Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/51795
* include/bits/stl_algobase.h (__lg<>(_Size)): Remove.
(__lg(int), __lg(unsigned), __lg(long), __lg(unsigned long),
__lg(long long), __lg(unsigned long long)): Define constexpr.
* include/bits/random.h (_Mod<>): Overcome Schrage's algorithm
limitations.
(__mod): Adjust.
(linear_congruential): Remove FIXME static_assert.
* include/bits/random.tcc (_Mod<>): Adjust.
* testsuite/26_numerics/random/linear_congruential_engine/operators/
51795.cc: New.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
From-SVN: r186948
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/random.h
libstdc++-v3/include/bits/random.tcc
libstdc++-v3/include/bits/stl_algobase.h
libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/51795.cc [new file with mode: 0644]