# Low degree check using barycentric formula
## Barycentric formula
$$A(X) = \prod_{i=0}^{n-1} (X-x_i)$$
$$
A'(X) = \sum_{j=0}^{n-1} \prod_{i \not= j}(X-x_i)
$$
$$
f(z) = A(z)\sum_{i=0}^{n-1} \frac{f_i}{A'(x_i)} \frac{1}{z-x_i}
$$
## Check that a polynomial is of low degree
Let $\omega$ be an $n$-th root of unity satisfying $A(X)= X^n-1=0$.
Let $f(X)$ be a polynomial defined by its evaluations $f_i=f(\omega^i)$ ($n$ values). We want to check that $f(X)$ is of degree at most $n/2-1$.
Let $g(X)$ be the polynomial function resulting from interpolating $f_0, f_2, f_4, \ldots$ and $h(X)$ the same by interpolating $f_1, f_3, f_5, \ldots$. If $g(X)==h(X)$, then the degree of $f(X)$ must be less than $n/2-1$.
We sample a random point $r$ and use the barycentric formular to evaluat $g(X)$ and $h(X)$ at $r$. If $g(r)=h(r)$ then with large probability $g(X)=h(X)$ (Schwartz-Zippel Lemma). In order to compute this we use the barycentric formula for $g(r)$ and $h(r)$:
$$B(X) = X^\frac{n}{2} - 1$$
$$
B'(X) = \frac{n}{2} X^{\frac{n}{2} - 1}
$$
$$
g(r) = B(r)\sum_{\substack{i=0 \\ i \text{ even}} }^{n-1} \frac{f_i}{B'(\omega^i)} \frac{1}{r-\omega^i}
= \frac{2}{n} \sum_{\substack{i=0 \\ i \text{ even}} }^{n-1} \frac{f_i}{\omega^{i(\frac{n}{2} - 1)}} \frac{r^\frac{n}{2} - 1}{r-\omega^i}
$$
$$C(X) = X^\frac{n}{2} + 1$$
$$
C'(X) = \frac{n}{2} X^{\frac{n}{2} - 1} = B'(X)
$$
$$
h(r) = C(r)\sum_{\substack{i=0 \\ i \text{ odd}} }^{n-1} \frac{f_i}{C'(\omega^i)} \frac{1}{r-\omega^i}
= \frac{2}{n} \sum_{\substack{i=0 \\ i \text{ odd}} }^{n-1} \frac{f_i}{\omega^{i(\frac{n}{2} - 1)}} \frac{r^\frac{n}{2} + 1}{r-\omega^i}
$$
So to check that $f(X)$ is of low degree verify that
$$
g(r) - h(r) = \frac{2}{n} \sum_{\substack{i=0} }^{n-1} \frac{f_i}{\omega^{i(\frac{n}{2} - 1)}} \frac{(-1)^i r^\frac{n}{2} - 1}{r-\omega^i} = 0
$$
## Proof of correctness
By contradiction. Assume that there does not exist a polynomial of degree $n-1$ or less that interpolates all $f_i$.
$g(X)$ and $h(X)$ are both of degree at most $n-1$; if $g(X)=h(X)$ then they would both interpolate all the points, which thus cannot be true. Thus $g(X)\not=h(X)$.
This means that $p(X)=g(X)-h(X)$ is a polynomial of degree at most $n-1$ and not identical to $0$; accordingly it has at most $n-1$ zeros in $\mathbb F_p$. The probability that $p(r)=0$ for a random $r$ is thus $\leq \frac{n-1}{p}$ and thus negligible.
## Generalisation to any degree
More generally, how can we check that $n$ points are on a polynomial of degree $d$, where $d$ is not necessarily $\frac{n}{2} - 1$?
We can still do this by applying the barycentric formular to (1) and $d+1$ points and (2) all $n$ points.
$$B(X) = \prod_{i=0}^{d} (X-\omega^i)$$
$$
B'(X) = \sum_{j=0}^{d} \prod_{i \not= j}(X-\omega^i)
$$
$$
g(r) = B(r)\sum_{i=0}^d\frac{f_i}{B'(\omega^i)}\frac{1}{r-\omega^i}
$$
$$C(X) = X^n - 1$$
$$
C'(X) = n X^{n - 1}
$$
$$
h(r) = C(r)\sum_{i=0}^{n-1} \frac{f_i}{C'(\omega^i)} \frac{1}{r-\omega^i}
= \frac{1}{n} \sum_{i=0}^{n-1} \frac{f_i}{\omega^{i(n - 1)}} \frac{r^n - 1}{r-\omega^i}
$$
$$
g(r) - h(r) =\sum_{i=0}^d \frac{f_i}{r-\omega^i}\left(\frac{B(r)}{B'(\omega^i)} - \frac{r^n - 1}{n\omega^{i(n - 1)}} \right) - \sum_{i=d}^{n-1} \frac{f_i}{r-\omega^i}\frac{r^n - 1}{n\omega^{i(n - 1)}}
$$
The main downside of this formular is that computing the $B'(\omega^i)$ takes quadratic time and this is not a linear algorithm anymore. However when $d$ and $n$ are known beforehand this can be precomputed.