diff options
Diffstat (limited to 'boost/multiprecision/cpp_int')
-rw-r--r-- | boost/multiprecision/cpp_int/add.hpp | 4 | ||||
-rw-r--r-- | boost/multiprecision/cpp_int/bitwise.hpp | 12 | ||||
-rw-r--r-- | boost/multiprecision/cpp_int/divide.hpp | 2 | ||||
-rw-r--r-- | boost/multiprecision/cpp_int/import_export.hpp | 8 | ||||
-rw-r--r-- | boost/multiprecision/cpp_int/limits.hpp | 4 | ||||
-rw-r--r-- | boost/multiprecision/cpp_int/multiply.hpp | 4 |
6 files changed, 17 insertions, 17 deletions
diff --git a/boost/multiprecision/cpp_int/add.hpp b/boost/multiprecision/cpp_int/add.hpp index 22b8c186dc..2fca9b9597 100644 --- a/boost/multiprecision/cpp_int/add.hpp +++ b/boost/multiprecision/cpp_int/add.hpp @@ -84,7 +84,7 @@ inline void add_unsigned(CppInt1& result, const CppInt2& a, const CppInt3& b) BO { // We overflowed, need to add one more limb: result.resize(x + 1, x + 1); - if(CppInt1::variable || (result.size() > x)) + if(result.size() > x) result.limbs()[x] = static_cast<limb_type>(carry); } result.normalize(); @@ -126,7 +126,7 @@ inline void add_unsigned(CppInt1& result, const CppInt2& a, const limb_type& o) // We overflowed, need to add one more limb: unsigned x = result.size(); result.resize(x + 1, x + 1); - if(CppInt1::variable || (result.size() > x)) + if(result.size() > x) result.limbs()[x] = static_cast<limb_type>(carry); } result.normalize(); diff --git a/boost/multiprecision/cpp_int/bitwise.hpp b/boost/multiprecision/cpp_int/bitwise.hpp index 748d088056..168544c9bb 100644 --- a/boost/multiprecision/cpp_int/bitwise.hpp +++ b/boost/multiprecision/cpp_int/bitwise.hpp @@ -326,7 +326,7 @@ inline void left_shift_byte(Int& result, double_limb_type s) if(rs != ors) pr[rs - 1] = 0u; std::size_t bytes = static_cast<std::size_t>(s / CHAR_BIT); - std::size_t len = std::min(ors * sizeof(limb_type), rs * sizeof(limb_type) - bytes); + std::size_t len = (std::min)(ors * sizeof(limb_type), rs * sizeof(limb_type) - bytes); if(bytes >= rs * sizeof(limb_type)) result = static_cast<limb_type>(0u); else @@ -411,14 +411,14 @@ inline void left_shift_generic(Int& result, double_limb_type s) ++i; } } - for(; ors > 1 + i; ++i) + for(; rs - i >= 2 + offset; ++i) { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (Int::limb_bits - shift); + pr[rs - 1 - i] = pr[rs - 1 - i - offset] << shift; + pr[rs - 1 - i] |= pr[rs - 2 - i - offset] >> (Int::limb_bits - shift); } - if(ors >= 1 + i) + if(rs - i >= 1 + offset) { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + pr[rs - 1 - i] = pr[rs - 1 - i - offset] << shift; ++i; } for(; i < rs; ++i) diff --git a/boost/multiprecision/cpp_int/divide.hpp b/boost/multiprecision/cpp_int/divide.hpp index 2f83d1ba71..81583ec384 100644 --- a/boost/multiprecision/cpp_int/divide.hpp +++ b/boost/multiprecision/cpp_int/divide.hpp @@ -220,7 +220,7 @@ void divide_unsigned_helper( // double_limb_type carry = 0; t.resize(y.size() + shift + 1, y.size() + shift); - bool truncated_t = !CppInt1::variable && (t.size() != y.size() + shift + 1); + bool truncated_t = (t.size() != y.size() + shift + 1); typename CppInt1::limb_pointer pt = t.limbs(); for(unsigned i = 0; i < shift; ++i) pt[i] = 0; diff --git a/boost/multiprecision/cpp_int/import_export.hpp b/boost/multiprecision/cpp_int/import_export.hpp index 0fe3249ddc..7bd843fb32 100644 --- a/boost/multiprecision/cpp_int/import_export.hpp +++ b/boost/multiprecision/cpp_int/import_export.hpp @@ -134,7 +134,7 @@ namespace boost { cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& result = val.backend(); result.resize(static_cast<unsigned>(limb_len), static_cast<unsigned>(limb_len)); // checked types may throw here if they're not large enough to hold the data! result.limbs()[result.size() - 1] = 0u; - std::memcpy(result.limbs(), i, std::min(byte_len, result.size() * sizeof(limb_type))); + std::memcpy(result.limbs(), i, (std::min)(byte_len, result.size() * sizeof(limb_type))); result.normalize(); // In case data has leading zeros. return val; } @@ -150,7 +150,7 @@ namespace boost { ++limb_len; result.limbs()[0] = 0u; result.resize(static_cast<unsigned>(limb_len), static_cast<unsigned>(limb_len)); // checked types may throw here if they're not large enough to hold the data! - std::memcpy(result.limbs(), i, std::min(byte_len, result.size() * sizeof(result.limbs()[0]))); + std::memcpy(result.limbs(), i, (std::min)(byte_len, result.size() * sizeof(result.limbs()[0]))); result.normalize(); // In case data has leading zeros. return val; } @@ -199,8 +199,8 @@ namespace boost { template <class Backend> inline boost::uintmax_t extract_bits(const Backend& val, unsigned location, unsigned count, const mpl::true_&) { - boost::uintmax_t result = *val.limbs(); - boost::uintmax_t mask = count == std::numeric_limits<boost::uintmax_t>::digits ? ~static_cast<boost::uintmax_t>(0) : (static_cast<boost::uintmax_t>(1u) << count) - 1; + typename Backend::local_limb_type result = *val.limbs(); + typename Backend::local_limb_type mask = count >= std::numeric_limits<typename Backend::local_limb_type>::digits ? ~static_cast<typename Backend::local_limb_type>(0) : (static_cast<typename Backend::local_limb_type>(1u) << count) - 1; return (result >> location) & mask; } diff --git a/boost/multiprecision/cpp_int/limits.hpp b/boost/multiprecision/cpp_int/limits.hpp index 518bb9f4e0..b19e1ebbe6 100644 --- a/boost/multiprecision/cpp_int/limits.hpp +++ b/boost/multiprecision/cpp_int/limits.hpp @@ -23,7 +23,7 @@ inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinB { // Bounded and signed. typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type; - typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates> ui_type; + typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates> ui_type; static const result_type val = -result_type(~ui_type(0)); return val; } @@ -62,7 +62,7 @@ inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinB { // Bounded and signed. typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type; - typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates> ui_type; + typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates> ui_type; static const result_type val = ~ui_type(0); return val; } diff --git a/boost/multiprecision/cpp_int/multiply.hpp b/boost/multiprecision/cpp_int/multiply.hpp index 88264c47be..afe1db7a9f 100644 --- a/boost/multiprecision/cpp_int/multiply.hpp +++ b/boost/multiprecision/cpp_int/multiply.hpp @@ -48,7 +48,7 @@ inline typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBit { unsigned i = result.size(); result.resize(i + 1, i + 1); - if(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::variable || (result.size() > i)) + if(result.size() > i) result.limbs()[i] = static_cast<limb_type>(carry); } result.sign(a.sign()); @@ -157,7 +157,7 @@ inline typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBit BOOST_ASSERT(carry <= (cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value)); } resize_for_carry(result, as + bs); // May throw if checking is enabled - if(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::variable || (i + bs < result.size())) + if(i + bs < result.size()) pr[i + bs] = static_cast<limb_type>(carry); carry = 0; } |