logo
Back to learn section

Anatomy of a STARK: Part 6

Alan Szepieniec

October 28, 2021

1 min read

Anatomy of a STARK
Anatomy of a STARK

The previous part of this tutorial posed the question whether maths-level improvement can reduce the running times of the STARK algorithms. Indeed they can! There are folklore computational algebra tricks that are independent of the STARK machinery, as well as some techniques specific to interactive proof systems.

The Number Theoretic Transform and its Applications

The Fast Fourier Transform

Let f(X)f(X) be a polynomial of degree at most 2k12^k - 1 with complex numbers as coefficients. What is the most efficient way to find the list of evaluations f(X)f(X) on the 2k2^k complex roots of unity? Specifically, let ω=e2πi/2k\omega = e^{2 \pi i / 2^k}, then the output of the algorithm should be (f(ωi))i=02k1=(f(1),f(ω),f(ω2),,f(ω2k1))(f(\omega^i))_{i=0}^{2^k-1} = (f(1), f(\omega), f(\omega^2), \ldots, f(\omega^{2^k-1})).

The naïve solution is to sequentially compute each evaluation individually. A more intelligent solution relies on the observation that f(ωi)=j=02k1ωijfjf(\omega^i) = \sum_{j=0}^{2^k-1} \omega^{ij} f_j and splitting the even and odd terms gives

undefined