ReducedFraction& ReducedFraction::operator-=(const ReducedFraction& val) { preventOverflow(); ReducedFraction value = val; value.preventOverflow(); const int tmp = lcm(denominator_, val.denominator_); numerator_ = fractionPart(tmp, numerator_, denominator_) - fractionPart(tmp, val.numerator_, val.denominator_); denominator_ = tmp; return *this; }
ReducedFraction& ReducedFraction::operator/=(const ReducedFraction& val) { preventOverflow(); ReducedFraction value = val; value.preventOverflow(); Q_ASSERT_X(!isMultiplicationOverflow(numerator_, val.denominator_), "ReducedFraction::operator/=", "Multiplication overflow"); Q_ASSERT_X(!isMultiplicationOverflow(denominator_, val.numerator_), "ReducedFraction::operator/=", "Multiplication overflow"); numerator_ *= val.denominator_; denominator_ *= val.numerator_; return *this; }