public final class ModularComposition extends Object
| Modifier and Type | Method and Description |
|---|---|
static <T extends IUnivariatePolynomial<T>> |
composition(T poly,
T point,
T polyModulus)
Returns modular composition
poly(point) mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
composition(T poly,
T point,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular composition
poly(point) mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
compositionBrentKung(T poly,
ArrayList<T> pointPowers,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
int tBrentKung)
Returns modular composition
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition. |
static <T extends IUnivariatePolynomial<T>> |
compositionBrentKung(T poly,
T point,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular composition
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition. |
static UnivariatePolynomialZp64 |
compositionHorner(UnivariatePolynomialZp64 poly,
UnivariatePolynomialZp64 point,
UnivariatePolynomialZp64 polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod)
Returns modular composition
poly(point) mod polyModulus calculated with plain Horner scheme. |
static <T extends IUnivariatePolynomial<T>> |
polyPowers(T poly,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
int nIterations)
Returns
poly^{i} mod polyModulus for i in [0...nIterations] |
static <T extends IUnivariatePolynomial<T>> |
powModulusMod(T poly,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
ArrayList<T> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static <E> UnivariatePolynomial<E> |
powModulusMod(UnivariatePolynomial<E> poly,
UnivariatePolynomial<E> polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomial<E>> invMod,
ArrayList<UnivariatePolynomial<E>> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static UnivariatePolynomialZp64 |
powModulusMod(UnivariatePolynomialZp64 poly,
UnivariatePolynomialZp64 polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
ArrayList<UnivariatePolynomialZp64> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static <T extends IUnivariatePolynomial<T>> |
xPowers(T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns
x^{i*modulus} mod polyModulus for i in [0...degree], where degree is polyModulus degree. |
public static <T extends IUnivariatePolynomial<T>> ArrayList<T> xPowers(T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
x^{i*modulus} mod polyModulus for i in [0...degree], where degree is polyModulus degree.polyModulus - the monic modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))x^{i*modulus} mod polyModulus for i in [0...degree], where degree is polyModulus degreeUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> ArrayList<T> polyPowers(T poly, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, int nIterations)
poly^{i} mod polyModulus for i in [0...nIterations]poly - the polynomialpolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))poly^{i} mod polyModulus for i in [0...nIterations]UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static UnivariatePolynomialZp64 powModulusMod(UnivariatePolynomialZp64 poly, UnivariatePolynomialZp64 polyModulus, UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod, ArrayList<UnivariatePolynomialZp64> xPowers)
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)]poly - the polynomialpolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))xPowers - precomputed monomial powers x^{i*modulus} mod polyModulus for i in [0...degree(poly)]poly^modulus mod polyModulusxPowers(IUnivariatePolynomial, UnivariateDivision.InverseModMonomial),
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <E> UnivariatePolynomial<E> powModulusMod(UnivariatePolynomial<E> poly, UnivariatePolynomial<E> polyModulus, UnivariateDivision.InverseModMonomial<UnivariatePolynomial<E>> invMod, ArrayList<UnivariatePolynomial<E>> xPowers)
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)]poly - the polynomialpolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))xPowers - precomputed monomial powers x^{i*modulus} mod polyModulus for i in [0...degree(poly)]poly^modulus mod polyModulusxPowers(IUnivariatePolynomial, UnivariateDivision.InverseModMonomial),
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T powModulusMod(T poly, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, ArrayList<T> xPowers)
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)]poly - the polynomialpolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))xPowers - precomputed monomial powers x^{i*modulus} mod polyModulus for i in [0...degree(poly)]poly^modulus mod polyModulusxPowers(IUnivariatePolynomial, UnivariateDivision.InverseModMonomial),
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T compositionBrentKung(T poly, ArrayList<T> pointPowers, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, int tBrentKung)
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition.poly - the polynomialpointPowers - precomputed powers of evaluation point point^{i} mod polyModuluspolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))tBrentKung - Brent-Kung splitting parameter (optimal choice is ~sqrt(main.degree))poly(point) mod polyModulus polyPowers(IUnivariatePolynomial, IUnivariatePolynomial, UnivariateDivision.InverseModMonomial, int),
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T compositionBrentKung(T poly, T point, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition.poly - the polynomialpoint - the evaluation pointpolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)})poly(point) mod polyModulus UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static UnivariatePolynomialZp64 compositionHorner(UnivariatePolynomialZp64 poly, UnivariatePolynomialZp64 point, UnivariatePolynomialZp64 polyModulus, UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod)
poly(point) mod polyModulus calculated with plain Horner scheme.poly - the polynomialpoint - the evaluation pointpolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)})poly(point) mod polyModulus UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T composition(T poly, T point, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
poly(point) mod polyModulus. Brent & Kung algorithm used (compositionBrentKung(IUnivariatePolynomial, ArrayList, IUnivariatePolynomial,
UnivariateDivision.InverseModMonomial, int)poly - the polynomialpoint - the evaluation pointpolyModulus - the monic polynomial modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))poly(point) mod polyModulus polyPowers(IUnivariatePolynomial, IUnivariatePolynomial, UnivariateDivision.InverseModMonomial, int),
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T composition(T poly, T point, T polyModulus)
poly(point) mod polyModulus. Brent & Kung algorithm used (compositionBrentKung(IUnivariatePolynomial, ArrayList, IUnivariatePolynomial,
UnivariateDivision.InverseModMonomial, int)poly - the polynomialpoint - the evaluation pointpolyModulus - the monic polynomial moduluspoly(point) mod polyModulus polyPowers(IUnivariatePolynomial, IUnivariatePolynomial, UnivariateDivision.InverseModMonomial, int),
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)Copyright © 2022. All rights reserved.