Fixed-point Bluestein reduction with an arbitrary convolution oracle
ProvedIntMul.HvdH.bluestein_fpinteger-multiplication
Let be even, with for , and consider arrays on the box in fixed point at precision . Let be any map on fixed-point arrays such that, for inputs in the disc of radius on the box, lies in the disc on the box and
where and is the cyclic convolution convC. Let be a fixed-point chirp table in the disc with on the box, where and (chirpIdx). Then Bluestein's algorithm stays in the disc on the box and approximates the normalised DFT:
This separates Theorem 3.1 of Harvey–van der Hoeven from the way the convolution is computed. Any convolution routine (for example an exact one over a Fermat ring followed by a single rounding) and any chirp table can be plugged in.
Preamble
import Definitions.Def_IntMul_HvdH_ConvC
Formal statement
namespace IntMul.HvdH
theorem bluestein_fp {d : ℕ} (p r : ℕ) (e : Fin d → ℕ) (hr : 1 ≤ r) (hr2 : Even r)
(he1 : ∀ i, 1 ≤ e i) (he : ∀ i, 2 ^ e i ∣ r)
(M : ((Fin (d + 1) → ℕ) → ℤ × ℤ) → ((Fin (d + 1) → ℕ) → ℤ × ℤ) → (Fin (d + 1) → ℕ) → ℤ × ℤ)
(δ : ℝ)
(hM : ∀ U V : (Fin (d + 1) → ℕ) → ℤ × ℤ,
(∀ x : Fin (d + 1) → ℕ, (∀ i : Fin d, x i.castSucc < 2 ^ e i) → x (Fin.last d) < r →
‖gC (U x)‖ ≤ 2 ^ p) →
(∀ x : Fin (d + 1) → ℕ, (∀ i : Fin d, x i.castSucc < 2 ^ e i) → x (Fin.last d) < r →
‖gC (V x)‖ ≤ 2 ^ p) →
∀ j : Fin (d + 1) → ℕ, (∀ i : Fin d, j i.castSucc < 2 ^ e i) → j (Fin.last d) < r →
‖gC (M U V j)‖ ≤ 2 ^ p ∧
‖gC (M U V j) - 2 ^ p *
convC r e (fun x => gC (U x) / 2 ^ p) (fun x => gC (V x) / 2 ^ p) j‖ ≤ δ)
(A : (Fin (d + 1) → ℕ) → ℤ × ℤ) (εa : ℝ)
(hA : ∀ x : Fin (d + 1) → ℕ, (∀ i : Fin d, x i.castSucc < 2 ^ e i) → x (Fin.last d) < r →
‖gC (A x)‖ ≤ 2 ^ p ∧
‖gC (A x) - 2 ^ p *
Complex.exp (2 * Real.pi * Complex.I * (chirpIdx r e x : ℂ) / ((2 * r : ℕ) : ℂ))‖ ≤ εa)
(U : (Fin (d + 1) → ℕ) → ℤ × ℤ)
(hU : ∀ x : Fin (d + 1) → ℕ, (∀ i : Fin d, x i.castSucc < 2 ^ e i) → x (Fin.last d) < r →
‖gC (U x)‖ ≤ 2 ^ p) :
∀ j : Fin (d + 1) → ℕ, (∀ i : Fin d, j i.castSucc < 2 ^ e i) → j (Fin.last d) < r →
‖gC (mulZ p (conjZ (A j)) (M (fun k => mulZ p (conjZ (A k)) (U k)) A j))‖ ≤ 2 ^ p ∧
‖gC (mulZ p (conjZ (A j)) (M (fun k => mulZ p (conjZ (A k)) (U k)) A j)) -
2 ^ p * dftC r e (fun x => gC (U x) / 2 ^ p) j‖ ≤ δ + 3 * εa + 3 := 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, proof of Theorem 3.1