Next | Continued Fraction Arithmetic | 45 |
It might look a bit like this:
/* Return -1 if a < b * 0 if a == b * +1 if a > b */
int compare_fractions(CFract a, CFract b) { int term = +1; for (;;) { if (null(a) && null(b)) return 0; else if (null(a)) return term * +1; else if (null(b)) return term * -1; else { unsigned a0 = first(a), b0 = first(b); if (a0 < b0) return -1 * term; else if (a0 > b0) return +1 * term; else { term = -term; a = rest(a); b = rest(b); } } } }
Next | Back |