Approximate Fraction Matching
Goal. We need to compare a fraction \frac{a}{b} < t where 0 \leq a \leq b \leq 12\,800 and t\in[0,1]. We want to approximate t by a fraction \hat{t} = \frac{c}{d \cdot p} where p = 65\,519 and d \cdot p < 2^{32}.
The approximation error is the maximum observable discrepancy.
\max \vert \frac{a}{b} - \hat{t} \vert
Question. What are the optimal values of c and d, such that
Without loss of generality we can assume t \in F_n, as we can always round t up to the nearest value (and handle t=1 as a special case) without affecting the comparison.
Farey Sequences
Consider all distinct fractions in [0,1] with denominators up to n. When ordered these form the Farey seqeunce of order n, the values of which are:
F_n = \left\{ (a,b) \mid 0 ≤ a ≤ b ≤ n ∧ \gcd(a,b) = 1 \right\}
Some interesting results are known, for example
\vert F_n \vert = 1 + \sum_{i\in[1,n]} φ(i)
where φ is Euler's totient function. There is also a surprisingly simple algorithm to generate the sequence:
=
, , , yield
= //
= , , * - , * -
, , , yield