From f2821a0231aa85cc736e48acb165b93e708ba457 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 1 Jul 2013 17:06:12 +0000 Subject: [PATCH] Fix left shift operator. Fixes #8741. [SVN r84925] --- include/boost/multiprecision/cpp_int/bitwise.hpp | 12 ++---------- test/test_cpp_int.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/include/boost/multiprecision/cpp_int/bitwise.hpp b/include/boost/multiprecision/cpp_int/bitwise.hpp index 7df93181..95efacd7 100644 --- a/include/boost/multiprecision/cpp_int/bitwise.hpp +++ b/include/boost/multiprecision/cpp_int/bitwise.hpp @@ -229,12 +229,6 @@ inline typename enable_if_c(s / cpp_int_backend::limb_bits); limb_type shift = static_cast(s % cpp_int_backend::limb_bits); - /* - static const unsigned max_bits = max_bits >::value; - static const unsigned max_limbs = max_bits / cpp_int_backend::limb_bits - + (max_bits % cpp_int_backend::limb_bits ? 1 : 0); - */ - unsigned ors = result.size(); if((ors == 1) && (!*result.limbs())) return; // shifting zero yields zero. @@ -244,8 +238,7 @@ inline typename enable_if_c::limb_pointer pr = result.limbs(); if(offset > rs) @@ -255,11 +248,10 @@ inline typename enable_if_c ors + offset) diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index 6e28001f..14f5bdac 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -173,6 +173,12 @@ struct tester { BOOST_CHECK_EQUAL(mpz_int(a << i).str(), test_type(a1 << i).str()); } + else if(!is_checked_cpp_int::value) + { + test_type t1(mpz_int(a << i).str()); + test_type t2 = a1 << i; + BOOST_CHECK_EQUAL(t1, t2); + } BOOST_CHECK_EQUAL(mpz_int(a >> i).str(), test_type(a1 >> i).str()); } // gcd/lcm