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()); }
/** Appends a Rational value to a StringBuffer */ public void rationalToString (StringBuffer buf, String tag, String margin, Rational r) { String margn2 = margin + " "; long numer = r.getNumerator (); long denom = r.getDenominator (); buf.append (margin + elementStart (tag) + EOL); buf.append (margn2 + element ("mix:numerator", Long.toString (numer)) + EOL); if (denom != 1L) { buf.append (margn2 + element ("mix:denominator", Long.toString (denom)) + EOL); } buf.append (margin + elementEnd (tag) + EOL); } }