Arithmetic/Rational/Java: Difference between revisions

Content added Content deleted
No edit summary
(Looks for common denominator when adding/subtracting)
Line 259: Line 259:
first = first.abs();
first = first.abs();
second = second.abs();
second = second.abs();
BigInteger numerator = first.numerator.multiply(second.denominator).add(second.numerator.multiply(first.denominator));
BigInteger numerator = null;
BigInteger denominator = first.denominator.multiply(second.denominator);
BigInteger denominator = null;
if (first.denominator.equals(second.denominator))
{
numerator = first.numerator.add(second.numerator);
denominator = first.denominator;
}
else
{
numerator = first.numerator.multiply(second.denominator).add(second.numerator.multiply(first.denominator));
denominator = first.denominator.multiply(second.denominator);
}
return new BigRational(numerator, denominator, true, resultIsNegative);
return new BigRational(numerator, denominator, true, resultIsNegative);
}
}
Line 268: Line 278:
first = first.abs();
first = first.abs();
second = second.abs();
second = second.abs();
BigInteger numerator = null;
return new BigRational(first.numerator.multiply(second.denominator).subtract(second.numerator.multiply(first.denominator)), first.denominator.multiply(second.denominator));
BigInteger denominator = null;
if (first.denominator.equals(second.denominator))
{
numerator = first.numerator.subtract(second.numerator);
denominator = first.denominator;
}
else
{
numerator = first.numerator.multiply(second.denominator).subtract(second.numerator.multiply(first.denominator));
denominator = first.denominator.multiply(second.denominator);
}
return new BigRational(numerator, denominator);
}
}
Line 377: Line 399:
passedAll &= testEquals("Addition-3", BigRational.valueOf("-2/5").add(BigRational.valueOf("3/7")), "1/35");
passedAll &= testEquals("Addition-3", BigRational.valueOf("-2/5").add(BigRational.valueOf("3/7")), "1/35");
passedAll &= testEquals("Addition-4", BigRational.valueOf("-2/5").add(BigRational.valueOf("-3/7")), "-29/35");
passedAll &= testEquals("Addition-4", BigRational.valueOf("-2/5").add(BigRational.valueOf("-3/7")), "-29/35");
passedAll &= testEquals("Addition-5", BigRational.valueOf("2/5").add(BigRational.valueOf("4/5")), "6/5");
passedAll &= testEquals("Subtraction-1", BigRational.valueOf("2/5").subtract(BigRational.valueOf("3/7")), "-1/35");
passedAll &= testEquals("Subtraction-1", BigRational.valueOf("2/5").subtract(BigRational.valueOf("3/7")), "-1/35");
passedAll &= testEquals("Subtraction-2", BigRational.valueOf("2/5").subtract(BigRational.valueOf("-3/7")), "29/35");
passedAll &= testEquals("Subtraction-2", BigRational.valueOf("2/5").subtract(BigRational.valueOf("-3/7")), "29/35");
passedAll &= testEquals("Subtraction-3", BigRational.valueOf("-2/5").subtract(BigRational.valueOf("3/7")), "-29/35");
passedAll &= testEquals("Subtraction-3", BigRational.valueOf("-2/5").subtract(BigRational.valueOf("3/7")), "-29/35");
passedAll &= testEquals("Subtraction-4", BigRational.valueOf("-2/5").subtract(BigRational.valueOf("-3/7")), "1/35");
passedAll &= testEquals("Subtraction-4", BigRational.valueOf("-2/5").subtract(BigRational.valueOf("-3/7")), "1/35");
passedAll &= testEquals("Subtraction-5", BigRational.valueOf("2/7").subtract(BigRational.valueOf("3/7")), "-1/7");
passedAll &= testTrue("Comparison-1", BigRational.valueOf("2/5").compareTo(BigRational.valueOf("-2/5")) > 0);
passedAll &= testTrue("Comparison-1", BigRational.valueOf("2/5").compareTo(BigRational.valueOf("-2/5")) > 0);
passedAll &= testTrue("Comparison-2", BigRational.valueOf("-2/5").compareTo(BigRational.valueOf("2/5")) < 0);
passedAll &= testTrue("Comparison-2", BigRational.valueOf("-2/5").compareTo(BigRational.valueOf("2/5")) < 0);