diff options
-rw-r--r-- | number.cpp | 14 |
1 files changed, 3 insertions, 11 deletions
@@ -67,11 +67,6 @@ number::to_uint32() const number number::operator+(const number &n) const { - /* We make sure our object is greater than or equal to n. */ - if (*this < n) { - return n.operator+(*this); - } - number result; auto it = _operands.cbegin(); @@ -79,9 +74,9 @@ number::operator+(const number &n) const bool carry = false; - while (it != _operands.cend()) { - const auto n1 = *it; - const auto n2 = *it_n; + while (it != _operands.cend() || it_n != n._operands.cend()) { + const auto n1 = (it != _operands.cend()) ? *it++ : 0; + const auto n2 = (it_n != n._operands.cend()) ? *it_n++ : 0; result._operands.push_back(n1 + n2 + (carry ? 1 : 0)); @@ -90,9 +85,6 @@ number::operator+(const number &n) const } else { carry = ((UINT32_MAX - n1 - (carry ? 1 : 0)) < n2); } - - ++it; - ++it_n; } if (carry) { |