Esempio n. 1
0
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;
      }
Esempio n. 2
0
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;
      }