ReducedFraction& ReducedFraction::operator/=(const ReducedFraction& val) { reduce(); ReducedFraction value = val; value.reduce(); checkMultiplicationOverflow(numerator_, val.denominator_); checkMultiplicationOverflow(denominator_, val.numerator_); numerator_ *= val.denominator_; denominator_ *= val.numerator_; return *this; }
ReducedFraction& ReducedFraction::operator-=(const ReducedFraction& val) { reduce(); ReducedFraction value = val; value.reduce(); const int tmp = lcm(denominator_, val.denominator_); numerator_ = fractionPart(tmp, numerator_, denominator_) - fractionPart(tmp, val.numerator_, val.denominator_); denominator_ = tmp; return *this; }