public final class UnivariatePolynomialArithmetic extends Object
Modifier and Type | Method and Description |
---|---|
static <T extends IUnivariatePolynomial<T>> |
createMonomialMod(BigInteger exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus . |
static <T extends IUnivariatePolynomial<T>> |
createMonomialMod(long exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus . |
static <T extends IUnivariatePolynomial<T>> |
polyAddMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the sum
(m1 + m2) and polyModulus . |
static <T extends IUnivariatePolynomial<T>> |
polyAddMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the sum
(m1 + m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
polyMod(T dividend,
T polyModulus,
boolean copy)
Returns the remainder of
dividend and polyModulus . |
static <T extends IUnivariatePolynomial<T>> |
polyMod(T dividend,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of
dividend and polyModulus using fast algorithm for pre-conditioned
modulus. |
static <T extends IUnivariatePolynomial<T>> |
polyMultiplyMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the product
(m1 * m2) and polyModulus . |
static <T extends IUnivariatePolynomial<T>> |
polyMultiplyMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the product
(m1 * m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
polyNegateMod(T m1,
T polyModulus,
boolean copy)
Returns the remainder of the negated poly
-m1 and polyModulus . |
static <T extends IUnivariatePolynomial<T>> |
polyNegateMod(T m1,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the negated poly
-m1 and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
polyPow(T base,
long exponent,
boolean copy)
Returns
base in a power of non-negative exponent |
static <T extends IUnivariatePolynomial<T>> |
polyPowMod(T base,
BigInteger exponent,
T polyModulus,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
polyPowMod(T base,
BigInteger exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
polyPowMod(T base,
long exponent,
T polyModulus,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
polyPowMod(T base,
long exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
polySubtractMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the difference
(m1 - m2) and polyModulus . |
static <T extends IUnivariatePolynomial<T>> |
polySubtractMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the difference
(m1 - m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
public static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, boolean copy)
dividend
and polyModulus
.dividend
- the polynomialpolyModulus
- the moduluscopy
- whether to clone dividend
; if not, the result will be placed directly to dividend
and the original dividend
data will be lostdividend % polyModulus
public static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
dividend
and polyModulus
using fast algorithm for pre-conditioned
modulus.dividend
- the polynomialpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clone dividend
; if not, the result will be placed directly to dividend
and the original dividend
data will be lostdividend % polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, boolean copy)
(m1 * m2)
and polyModulus
.m1
- the first multiplierm2
- the second multiplierpolyModulus
- the moduluscopy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of the first multiplier m1
and the original data of m1
will be lost(m1 * m2) % polyModulus
public static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
(m1 * m2)
and polyModulus
using fast algorithm for
pre-conditioned modulus.m1
- the first multiplierm2
- the second multiplierpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of the first multiplier m1
and the original data of m1
will be lost(m1 * m2) % polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
(m1 + m2)
and polyModulus
using fast algorithm for
pre-conditioned modulus.m1
- the first multiplierm2
- the second multiplierpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of the first multiplier m1
and the original data of m1
will be lost(m1 + m2) % polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, boolean copy)
(m1 + m2)
and polyModulus
.m1
- the first multiplierm2
- the second multiplierpolyModulus
- the moduluscopy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of the first multiplier m1
and the original data of m1
will be lost(m1 + m2) % polyModulus
public static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
(m1 - m2)
and polyModulus
using fast algorithm for
pre-conditioned modulus.m1
- the first multiplierm2
- the second multiplierpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of the first multiplier m1
and the original data of m1
will be lost(m1 - m2) % polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, boolean copy)
(m1 - m2)
and polyModulus
.m1
- the first multiplierm2
- the second multiplierpolyModulus
- the moduluscopy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of the first multiplier m1
and the original data of m1
will be lost(m1 - m2) % polyModulus
public static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
-m1
and polyModulus
using fast algorithm for
pre-conditioned modulus.m1
- the polynomialpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of m1
and the original data of m1
will be lost(-m1) % polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, boolean copy)
-m1
and polyModulus
.m1
- the polynomialpolyModulus
- the moduluscopy
- whether to clone m1
; if not, the result will be placed directly to the data structure
of m1
and the original data of m1
will be lost(-m1) % polyModulus
public static <T extends IUnivariatePolynomial<T>> T polyPow(T base, long exponent, boolean copy)
base
in a power of non-negative exponent
base
- the baseexponent
- the non-negative exponentcopy
- whether to clone base
; if not the data of base
will be lostbase
in a power of e
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, boolean copy)
base
in a power of non-negative exponent
modulo polyModulus
base
- the baseexponent
- the non-negative exponentpolyModulus
- the moduluscopy
- whether to clone base
; if not the data of base
will be lostbase
in a power of e
modulo polyModulus
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
base
in a power of non-negative exponent
modulo polyModulus
base
- the baseexponent
- the non-negative exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clone base
; if not the data of base
will be lostbase
in a power of e
modulo polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
base
in a power of non-negative exponent
modulo polyModulus
base
- the baseexponent
- the non-negative exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clone base
; if not the data of base
will be lostbase
in a power of e
modulo polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, boolean copy)
base
in a power of non-negative exponent
modulo polyModulus
base
- the baseexponent
- the non-negative exponentpolyModulus
- the moduluscopy
- whether to clone base
; if not the data of base
will be lostbase
in a power of e
modulo polyModulus
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
public static <T extends IUnivariatePolynomial<T>> T createMonomialMod(long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
x^exponent mod polyModulus
.exponent
- the monomial exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)x^exponent mod polyModulus
public static <T extends IUnivariatePolynomial<T>> T createMonomialMod(BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
x^exponent mod polyModulus
.exponent
- the monomial exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)x^exponent mod polyModulus
Copyright © 2018. All rights reserved.