Exact negacyclic multiplication through a Fermat-type modulus
ProvedIntMul.HvdH.fermatNegaMul_eqinteger-multiplication
Let and let have entries of absolute value at most , where . Put and . The algorithm fermatNegaMul evaluates at (so ). It reduces both values modulo , multiplies them modulo , takes the balanced residue in , and reads off balanced base- digits. It returns exactly the coefficients of the product in :
So a negacyclic polynomial product costs one multiplication modulo the Fermat-type number . This replaces the Kronecker step of Lemma 2.5 of Harvey–van der Hoeven when the pointwise products are done exactly.
Preamble
import Definitions.Def_IntMul_HvdH_Fermat
Formal statement
namespace IntMul.HvdH
theorem fermatNegaMul_eq (P n : ℕ) (u v : List ℤ) (M : ℤ) (hn : 1 ≤ n) (hP1 : 1 ≤ P)
(hu : u.length = n) (hv : v.length = n) (hM0 : 0 ≤ M)
(hub : ∀ x ∈ u, |x| ≤ M) (hvb : ∀ x ∈ v, |x| ≤ M) (hP : 4 * n * M ^ 2 < 2 ^ P) :
fermatNegaMul P n u v = negFold n (polyMul u v) := 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, Lemma 2.5 (variant)