package fmon.util case class Fraction(val num : Int, val denom : Int) extends Ordered[Fraction] { def *(f : Fraction) = Fraction(num * f.num, denom * f.denom) def *(x : Int) : Int = x * num / denom def unary_-() : Fraction = Fraction(-num, denom) override def compare(f : Fraction) : Int = { (num * f.denom) compare (f.num * denom) } def toDouble = 1.0 * num / denom } class IntFraction(val x : Int) extends AnyVal { def %% = Fraction(x, 100) def \\ (denom : Int) = Fraction(x, denom) def frac = Fraction(x, 1) }