X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Farbint.cpp;h=ac3994260836d567fa94f636aaab305151f2bb32;hp=59e22523c51b9d612626dc5f9f59833f8195b00b;hb=924cb525f587c58440c43bcae6ccfd9b2e41c99c;hpb=a182cbba4fe9e6a36c5063735dbec1c5340da04c diff --git a/src/arbint.cpp b/src/arbint.cpp index 59e2252..ac39942 100644 --- a/src/arbint.cpp +++ b/src/arbint.cpp @@ -114,6 +114,11 @@ void Arbint::Division(const Arbint & div, Arbint & result, Arbint & remainder) c { remainder = 0; result = 0; + if (div.IsZero()) + { + result = *this; + return; + } for (int i = 8*sizeof(digit_t)*m_digits.size(); i >= 0; --i) { remainder <<= 1; @@ -127,6 +132,7 @@ void Arbint::Division(const Arbint & div, Arbint & result, Arbint & remainder) c result.BitSet(i); } } + result.m_sign = !(m_sign == div.m_sign); } Arbint & Arbint::operator+=(const Arbint & add) @@ -265,7 +271,7 @@ Arbint & Arbint::operator>>=(unsigned amount) if (whole >= old_size) { - m_digits.resize(1); + m_digits.resize(1,0L); m_digits[0] = 0L; return *this; }