Zero-padded cyclic convolution equals linear convolution
ProvedIntMul.HvdH.cyclic_conv_eq_linearfourier-analysisinteger-multiplication
Let be a commutative ring and let vanish at every index . If , then the cyclic convolution of length of the zero-padded vectors equals the ordinary (acyclic) convolution: for every ,
where is the canonical representative of .
This is the standard zero-padding step that lets an integer (or polynomial) product be computed by a cyclic convolution, as in §5.3 of Harvey–van der Hoeven.
Preamble
import Mathlib
Formal statement
namespace IntMul.HvdH
theorem cyclic_conv_eq_linear {R : Type*} [CommRing R] {N n : ℕ} [NeZero N]
(hN : 2 * n ≤ N + 1) (u v : ℕ → R) (hu : ∀ i, n ≤ i → u i = 0) (hv : ∀ i, n ≤ i → v i = 0)
(k : ℕ) (hk : k < N) :
∑ j : ZMod N, u j.val * v ((k : ZMod N) - j).val =
∑ i ∈ Finset.range (k + 1), u i * v (k - i) := by sorry
end IntMul.HvdHSource
Harvey, van der Hoeven, Integer multiplication in time O(n log n), Annals of Math. 193 (2021), https://hal.science/hal-02070778, Sections 2.4 and 5.3