Fraction[T] = object num*, den*: T
CPLIB_MATH_FRACTIONS = 1
proc `$`[T](x: Fraction[T]): string
proc `*=`[T](x: var Fraction[T]; y: Fraction[T])
proc `*=`[T](x: var Fraction[T]; y: T)
proc `*`[T](x, y: Fraction[T]): Fraction[T]
proc `*`[T](x: Fraction[T]; y: T): Fraction[T]
proc `*`[T](x: T; y: Fraction[T]): Fraction[T]
proc `+=`[T](x: var Fraction[T]; y: Fraction[T])
proc `+=`[T](x: var Fraction[T]; y: T)
proc `+`[T](x, y: Fraction[T]): Fraction[T]
proc `+`[T](x: Fraction[T]; y: T): Fraction[T]
proc `+`[T](x: T; y: Fraction[T]): Fraction[T]
proc `-=`[T](x: var Fraction[T]; y: Fraction[T])
proc `-=`[T](x: var Fraction[T]; y: T)
proc `-`[T](x, y: Fraction[T]): Fraction[T]
proc `-`[T](x: Fraction[T]): Fraction[T]
proc `-`[T](x: Fraction[T]; y: T): Fraction[T]
proc `-`[T](x: T; y: Fraction[T]): Fraction[T]
proc `/=`[T](x: var Fraction[T]; y: Fraction[T])
proc `/=`[T](x: var Fraction[T]; y: T)
proc `/`[T](x, y: Fraction[T]): Fraction[T]
proc `/`[T](x: Fraction[T]; y: T): Fraction[T]
proc `/`[T](x: T; y: Fraction[T]): Fraction[T]
proc `<=`[T](x: Fraction[T]; y: Fraction[T] or T): bool
proc `<=`[T](x: T; y: Fraction[T]): bool
proc `<`[T](x, y: Fraction[T]): bool
proc `<`[T](x: Fraction[T]; y: T): bool
proc `<`[T](x: T; y: Fraction[T]): bool
proc `==`[T](x, y: Fraction[T]): bool
proc `==`[T](x: Fraction[T]; y: T): bool
proc `==`[T](x: T; y: Fraction[T]): bool
proc `>=`[T](x: Fraction[T]; y: Fraction[T] or T): bool
proc `>=`[T](x: T; y: Fraction[T]): bool
proc `>`[T](x, y: Fraction[T]): bool
proc `>`[T](x: Fraction[T]; y: T): bool
proc `>`[T](x: T; y: Fraction[T]): bool
proc abs[T](x: Fraction[T]): Fraction[T]
proc cmp[T](x, y: Fraction[T]): int
proc cmp[T](x: Fraction[T]; y: T): int
proc cmp[T](x: T; y: Fraction[T]): int
proc hash[T](x: Fraction[T]): Hash
proc initFraction[T](num, den: T; reduce: bool = true): Fraction[T]
proc initFraction[T](num: T): Fraction[T]
proc inv[T](x: Fraction[T]): Fraction[T]
proc isNaN(x: Fraction): bool
proc pow[T](x: Fraction[T]; n: int): Fraction[T]
proc reduce[T](self: var Fraction[T])
proc toFloat[T](x: Fraction[T]): float