protected static Rational average(Rational r1, Rational r2) { long d1 = r1.getDenominator(); long d2 = r2.getDenominator(); Rational f1 = new Rational(r1.getNumerator() * d2, r1.getDenominator() * d2); Rational f2 = new Rational(r2.getNumerator() * d1, r2.getDenominator() * d1); return new Rational((f1.getNumerator() + f2.getNumerator()) / 2, f1.getDenominator()); }