mirror of
https://github.com/logos-storage/outsourcing-Reed-Solomon.git
synced 2026-01-03 14:13:08 +00:00
41 lines
1.5 KiB
Haskell
41 lines
1.5 KiB
Haskell
|
|
|
||
|
|
module NTT.Class where
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
import Data.Kind
|
||
|
|
|
||
|
|
import Class.Field
|
||
|
|
import Class.Poly
|
||
|
|
|
||
|
|
import NTT.Subgroup
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
{-
|
||
|
|
class NTT ntt where
|
||
|
|
type Field ntt :: Type
|
||
|
|
type Poly ntt :: Type
|
||
|
|
|
||
|
|
forwardNTT :: Subgroup F -> Poly F -> FlatArray F
|
||
|
|
inverseNTT :: Subgroup F -> FlatArray F -> Poly F
|
||
|
|
shiftedForwardNTT :: Subgroup F -> F -> Poly F -> FlatArray F
|
||
|
|
shiftedInverseNTT :: Subgroup F -> F -> FlatArray F -> Poly F
|
||
|
|
asymmForwardNTT :: Subgroup F -> Poly F -> Subgroup F -> FlatArray F
|
||
|
|
-}
|
||
|
|
|
||
|
|
{-
|
||
|
|
-- | Polynomials which over an FFT-friend field support NTT operations
|
||
|
|
class (Univariate p, FFTField (Coeff p)) => UnivariateFFT p where
|
||
|
|
-- | Number-theoretical transform (evaluate on a subgroup)
|
||
|
|
ntt :: FFTSubgroup (Coeff p) -> p -> FlatArray (Coeff p)
|
||
|
|
-- | Inverse number-theoretical transform (interpolate on a subgroup)
|
||
|
|
intt :: FFTSubgroup (Coeff p) -> FlatArray (Coeff p) -> p
|
||
|
|
-- | Shifts @f@ by @eta@, evaluating @f(eta*omega^k)@
|
||
|
|
shiftedNTT :: FFTSubgroup (Coeff p) -> Coeff p -> p -> FlatArray (Coeff p)
|
||
|
|
-- | Shifts @f@ by @eta^-1@, interpolating @f@ so that @f(eta^-1 * omega^k) = y_k@
|
||
|
|
shiftedINTT :: FFTSubgroup (Coeff p) -> Coeff p -> FlatArray (Coeff p) -> p
|
||
|
|
-- | Evaluate on a larger subgroup than the polynomial is defined on
|
||
|
|
asymmNTT :: FFTSubgroup (Coeff p) -> p -> FFTSubgroup (Coeff p) -> FlatArray (Coeff p)
|
||
|
|
-}
|