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:

def farey_sequence(n, descending = False):
    a, b, c, d = (1, 1, n - 1, n) if descending else (0, 1, 1, n)
    yield (a, b)
    while 0 <= c <= n:
        k = (n + b) // d
        a, b, c, d = c, d, k * c - a, k * d - b
        yield (a, b)

Remco Bloemen
Math & Engineering