# 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)
```