public static RatNum make(IntNum num, IntNum den) { IntNum g = IntNum.gcd (num, den); if (den.isNegative ()) g = IntNum.neg (g); if (! g.isOne ()) { num = IntNum.quotient (num, g); den = IntNum.quotient (den, g); } return den.isOne () ? (RatNum)num : (RatNum)(new IntFraction (num, den)); }