Package cc.redberry.rings.poly.univar
Class UnivariatePolynomialArithmetic
java.lang.Object
cc.redberry.rings.poly.univar.UnivariatePolynomialArithmetic
public final class UnivariatePolynomialArithmetic extends Object
Helper methods for univariate polynomial arithmetic.
- Since:
- 1.0
-
Method Summary
Modifier and Type Method Description static <T extends IUnivariatePolynomial<T>>
TcreateMonomialMod(long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Createsx^exponent mod polyModulus
.static <T extends IUnivariatePolynomial<T>>
TcreateMonomialMod(BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Createsx^exponent mod polyModulus
.static <T extends IUnivariatePolynomial<T>>
TpolyAddMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the sum(m1 + m2)
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TpolyAddMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the sum(m1 + m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyMod(T dividend, T polyModulus, boolean copy)
Returns the remainder ofdividend
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TpolyMod(T dividend, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder ofdividend
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyMultiplyMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the product(m1 * m2)
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TpolyMultiplyMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the product(m1 * m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyNegateMod(T m1, T polyModulus, boolean copy)
Returns the remainder of the negated poly-m1
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TpolyNegateMod(T m1, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the negated poly-m1
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyPow(T base, long exponent, boolean copy)
Returnsbase
in a power of non-negativeexponent
static <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, long exponent, T polyModulus, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, BigInteger exponent, T polyModulus, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TpolySubtractMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the difference(m1 - m2)
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TpolySubtractMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the difference(m1 - m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.
-
Method Details
-
polyMod
public static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, boolean copy)Returns the remainder ofdividend
andpolyModulus
.- Parameters:
dividend
- the polynomialpolyModulus
- the moduluscopy
- whether to clonedividend
; if not, the result will be placed directly todividend
and the originaldividend
data will be lost- Returns:
dividend % polyModulus
-
polyMod
public static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder ofdividend
andpolyModulus
using fast algorithm for pre-conditioned modulus.- Parameters:
dividend
- the polynomialpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clonedividend
; if not, the result will be placed directly todividend
and the originaldividend
data will be lost- Returns:
dividend % polyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyMultiplyMod
public static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, boolean copy)Returns the remainder of the product(m1 * m2)
andpolyModulus
.- Parameters:
m1
- the first multiplierm2
- the second multiplierpolyModulus
- the moduluscopy
- whether to clonem1
; if not, the result will be placed directly to the data structure of the first multiplierm1
and the original data ofm1
will be lost- Returns:
(m1 * m2) % polyModulus
-
polyMultiplyMod
public static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the product(m1 * m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.- Parameters:
m1
- the first multiplierm2
- the second multiplierpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clonem1
; if not, the result will be placed directly to the data structure of the first multiplierm1
and the original data ofm1
will be lost- Returns:
(m1 * m2) % polyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyAddMod
public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the sum(m1 + m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.- Parameters:
m1
- the first multiplierm2
- the second multiplierpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clonem1
; if not, the result will be placed directly to the data structure of the first multiplierm1
and the original data ofm1
will be lost- Returns:
(m1 + m2) % polyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyAddMod
public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, boolean copy)Returns the remainder of the sum(m1 + m2)
andpolyModulus
.- Parameters:
m1
- the first multiplierm2
- the second multiplierpolyModulus
- the moduluscopy
- whether to clonem1
; if not, the result will be placed directly to the data structure of the first multiplierm1
and the original data ofm1
will be lost- Returns:
(m1 + m2) % polyModulus
-
polySubtractMod
public static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the difference(m1 - m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.- Parameters:
m1
- the first multiplierm2
- the second multiplierpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clonem1
; if not, the result will be placed directly to the data structure of the first multiplierm1
and the original data ofm1
will be lost- Returns:
(m1 - m2) % polyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polySubtractMod
public static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, boolean copy)Returns the remainder of the difference(m1 - m2)
andpolyModulus
.- Parameters:
m1
- the first multiplierm2
- the second multiplierpolyModulus
- the moduluscopy
- whether to clonem1
; if not, the result will be placed directly to the data structure of the first multiplierm1
and the original data ofm1
will be lost- Returns:
(m1 - m2) % polyModulus
-
polyNegateMod
public static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the negated poly-m1
andpolyModulus
using fast algorithm for pre-conditioned modulus.- Parameters:
m1
- the polynomialpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clonem1
; if not, the result will be placed directly to the data structure ofm1
and the original data ofm1
will be lost- Returns:
(-m1) % polyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyNegateMod
public static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, boolean copy)Returns the remainder of the negated poly-m1
andpolyModulus
.- Parameters:
m1
- the polynomialpolyModulus
- the moduluscopy
- whether to clonem1
; if not, the result will be placed directly to the data structure ofm1
and the original data ofm1
will be lost- Returns:
(-m1) % polyModulus
-
polyPow
Returnsbase
in a power of non-negativeexponent
- Parameters:
base
- the baseexponent
- the non-negative exponentcopy
- whether to clonebase
; if not the data ofbase
will be lost- Returns:
base
in a power ofe
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, boolean copy)Returnsbase
in a power of non-negativeexponent
modulopolyModulus
- Parameters:
base
- the baseexponent
- the non-negative exponentpolyModulus
- the moduluscopy
- whether to clonebase
; if not the data ofbase
will be lost- Returns:
base
in a power ofe
modulopolyModulus
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returnsbase
in a power of non-negativeexponent
modulopolyModulus
- Parameters:
base
- the baseexponent
- the non-negative exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clonebase
; if not the data ofbase
will be lost- Returns:
base
in a power ofe
modulopolyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returnsbase
in a power of non-negativeexponent
modulopolyModulus
- Parameters:
base
- the baseexponent
- the non-negative exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)copy
- whether to clonebase
; if not the data ofbase
will be lost- Returns:
base
in a power ofe
modulopolyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, boolean copy)Returnsbase
in a power of non-negativeexponent
modulopolyModulus
- Parameters:
base
- the baseexponent
- the non-negative exponentpolyModulus
- the moduluscopy
- whether to clonebase
; if not the data ofbase
will be lost- Returns:
base
in a power ofe
modulopolyModulus
- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
createMonomialMod
public static <T extends IUnivariatePolynomial<T>> T createMonomialMod(long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)Createsx^exponent mod polyModulus
.- Parameters:
exponent
- the monomial exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)- Returns:
x^exponent mod polyModulus
-
createMonomialMod
public static <T extends IUnivariatePolynomial<T>> T createMonomialMod(BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)Createsx^exponent mod polyModulus
.- Parameters:
exponent
- the monomial exponentpolyModulus
- the modulusinvMod
- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
)- Returns:
x^exponent mod polyModulus
-