X-Git-Url: https://mattmccutchen.net/bigint/bigint.git/blobdiff_plain/4efbb07622a0aa83db4fe05ca8c17aca406ed928..3aaa5ce601b009373fa7464f6de044f7b2e017ea:/BigInteger.cc diff --git a/BigInteger.cc b/BigInteger.cc index 69d2dd7..f70b021 100644 --- a/BigInteger.cc +++ b/BigInteger.cc @@ -1,6 +1,5 @@ /* * Matt McCutchen's Big Integer Library -* http://mysite.verizon.net/mccutchen/bigint/ */ #include "BigInteger.hh" @@ -358,9 +357,11 @@ void BigInteger::subtract(const BigInteger &a, const BigInteger &b) { // If a is zero, copy b and flip its sign. If b is zero, copy a. if (a.sign == zero) { BigUnsigned::operator =(b); - sign = Sign(-sign); + // Take the negative of _b_'s, sign, not ours. + // Bug pointed out by Sam Larkin on 2005.03.30. + sign = Sign(-b.sign); } else if (b.sign == zero) - operator =(a); + operator =(a); // If their signs differ, take a.sign and add the magnitudes. else if (a.sign != b.sign) { sign = a.sign;