Fast Multiplication via NTT #
This file wires forward NTT, pointwise multiplication, and inverse NTT into a spec/implementation pipeline.
Raw implementation pipeline for NTT-based multiplication.
Correctness as ordinary polynomial multiplication requires
Domain.fits D p q; see fastMulImpl_trim_eq_mul. Without this precondition,
this function only exposes the raw NTT pipeline result, which may include cyclic
wraparound and has no product-correctness guarantee. The output is not trimmed;
use FastMul.fastMulImpl for the canonical public API.
Instances For
Spec pipeline for NTT-based multiplication as a canonical polynomial.
Instances For
Implementation pipeline for NTT-based multiplication as a canonical polynomial.
Correctness as ordinary polynomial multiplication requires
Domain.fits D p.val q.val; see fastMulImpl_eq_mul. Without this precondition,
the raw NTT computation may include cyclic wraparound before canonicalization.
Instances For
Safe NTT-based multiplication wrapper.
This computes with fastMulImpl, but requires the caller to provide the
Domain.fits D p.val q.val proof at the call site.
Instances For
The safe wrapper is equivalent to ordinary canonical polynomial multiplication.
There are no extra assumptions because the required Domain.fits D p.val q.val
proof is already an argument of safeFastMul.
NTT-backed multiplication with canonical multiplication as a fallback.
The selector should return a domain fitting the required convolution length.
When it does, this uses fastMulImpl; otherwise it falls back to canonical
CPolynomial multiplication.
Instances For
withFallback agrees with canonical polynomial multiplication.