diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8fcab061b97..988334718af 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2006-08-22 Paolo Carlini + + * include/tr1/random.tcc (subtract_with_carry_01<>:: + seed(_Gen&, false_type)): Fix _M_carry initialization. + + * testsuite/tr1/5_numerical_facilities/random/ + subtract_with_carry/cons/default.cc: Qualify 1 as 1UL. + * testsuite/tr1/5_numerical_facilities/random/ + subtract_with_carry/cons/gen1.cc: Likewise. + 2006-08-22 Paolo Carlini * include/tr1/random (class subtract_with_carry_01<>): Add. diff --git a/libstdc++-v3/include/tr1/random.tcc b/libstdc++-v3/include/tr1/random.tcc index 2880aad580e..cbeb57d82d3 100644 --- a/libstdc++-v3/include/tr1/random.tcc +++ b/libstdc++-v3/include/tr1/random.tcc @@ -484,7 +484,15 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) _M_x[__i][__n - 1] = __mod<_UInt32Type, 1, 0, _Shift<_UInt32Type, __w % 32>::__value>(__gen()); } - _M_carry = (_M_x[long_lag - 1][0] == 0) ? 1 : 0; + + _M_carry = 1; + for (int __j = 0; __j < __n; ++__j) + if (_M_x[long_lag - 1][__j] != 0) + { + _M_carry = 0; + break; + } + _M_p = 0; // Initialize the array holding the negative powers of 2. diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc index 466354124fc..b87871d48d3 100644 --- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc +++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc @@ -32,7 +32,7 @@ test01() subtract_with_carry x; VERIFY( x.min() == 0 ); - VERIFY( x.max() == ((1<<24)-1) ); + VERIFY( x.max() == ((1UL << 24) - 1) ); VERIFY( x() == 15039276 ); } diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc index cacde1b8e36..509144563c3 100644 --- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc +++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc @@ -40,7 +40,7 @@ test01() subtract_with_carry x(gen); VERIFY( x.min() == 0 ); - VERIFY( x.max() == ((1 << 24) - 1) ); + VERIFY( x.max() == ((1UL << 24) - 1) ); } int main()