Evaluate a low-to-high coefficient list by Horner recursion.
Equations
- Hex.ZMod64.Ntt.evalCoeffs x [] = 0
- Hex.ZMod64.Ntt.evalCoeffs x (value :: values) = value + x * Hex.ZMod64.Ntt.evalCoeffs x values
Instances For
@[simp]
Evaluation of an empty coefficient list is zero.
def
Hex.ZMod64.Ntt.dftCoeff
{p : Nat}
[Bounds p]
(root : ZMod64 p)
(values : List (ZMod64 p))
(k : Nat)
:
ZMod64 p
The coefficientwise DFT value at frequency k.
Equations
- Hex.ZMod64.Ntt.dftCoeff root values k = Hex.ZMod64.Ntt.evalCoeffs (root ^ k) values
Instances For
def
Hex.ZMod64.Ntt.dft
{p : Nat}
[Bounds p]
(root : ZMod64 p)
(count : Nat)
(values : List (ZMod64 p))
:
The first count coefficientwise DFT values in ordinary frequency order.
Equations
- Hex.ZMod64.Ntt.dft root count values = List.ofFn fun (k : Fin count) => Hex.ZMod64.Ntt.dftCoeff root values ↑k
Instances For
def
Hex.ZMod64.Ntt.dftArray
{p : Nat}
[Bounds p]
(root : ZMod64 p)
(count : Nat)
(values : Array (ZMod64 p))
:
Array wrapper around the coefficientwise DFT reference.
Equations
- Hex.ZMod64.Ntt.dftArray root count values = (Hex.ZMod64.Ntt.dft root count values.toList).toArray