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 polyModulus
xPowers(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 polyModulus
xPowers(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 polyModulus
xPowers(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 polyModulus
polyModulus
- 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 © 2018. All rights reserved.