Package cc.redberry.rings
Class Rings
- java.lang.Object
-
- cc.redberry.rings.Rings
-
public final class Rings extends Object
Common rings.- Since:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description static AlgebraicNumberField<UnivariatePolynomial<BigInteger>>
GaussianIntegers
Ring of Gaussian integers (integer complex numbers).static AlgebraicNumberField<UnivariatePolynomial<Rational<BigInteger>>>
GaussianRationals
Field of Gaussian rationals (rational complex numbers).static Rationals<BigInteger>
Q
Field of rationals (Q)static UnivariateRing<UnivariatePolynomial<Rational<BigInteger>>>
UnivariateRingQ
Ring of univariate polynomials over rationals (Q[x])static UnivariateRing<UnivariatePolynomial<BigInteger>>
UnivariateRingZ
Ring of univariate polynomials over integers (Z[x])static Integers
Z
Ring of integers (Z)
-
Method Summary
Modifier and Type Method Description static <Poly extends IUnivariatePolynomial<Poly>>
AlgebraicNumberField<Poly>AlgebraicNumberField(Poly minimalPoly)
Algebraic number field generated by the specified minimal polynomialstatic <E> Rationals<E>
Frac(Ring<E> ring)
Ring of rational functions over specified ringstatic <E> AlgebraicNumberField<UnivariatePolynomial<E>>
GaussianNumbers(Ring<E> ring)
Gaussian numbers for a given ring (that is ring adjoined with imaginary unit)static FiniteField<UnivariatePolynomialZp64>
GF(long prime, int exponent)
Galois field with the cardinalityprime ^ exponent
(with prime < 2^63).static FiniteField<UnivariatePolynomial<BigInteger>>
GF(BigInteger prime, int exponent)
Galois field with the cardinalityprime ^ exponent
for arbitrary largeprime
static <Poly extends IUnivariatePolynomial<Poly>>
FiniteField<Poly>GF(Poly irreducible)
Galois field with the specified minimal polynomial.static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>MultipleFieldExtension(sPoly... minimalPolynomials)
Multiple field extension generated by given algebraic elements represented by their minimal polynomials (not tested that they are irreducible)static <E> MultivariateRing<MultivariatePolynomial<E>>
MultivariateRing(int nVariables, Ring<E> coefficientRing)
Ring of multivariate polynomials with specified number of variables over specified coefficient ringstatic <E> MultivariateRing<MultivariatePolynomial<E>>
MultivariateRing(int nVariables, Ring<E> coefficientRing, Comparator<DegreeVector> monomialOrder)
Ring of multivariate polynomials with specified number of variables over specified coefficient ringstatic <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>
MultivariateRing<Poly>MultivariateRing(Poly factory)
Ring of multivariate polynomials with specified factorystatic MultivariateRing<MultivariatePolynomial<Rational<BigInteger>>>
MultivariateRingQ(int nVariables)
Ring of multivariate polynomials over rationals (Q[x1, x2, ...])static MultivariateRing<MultivariatePolynomial<BigInteger>>
MultivariateRingZ(int nVariables)
Ring of multivariate polynomials over integers (Z[x1, x2, ...])static MultivariateRing<MultivariatePolynomial<BigInteger>>
MultivariateRingZp(int nVariables, BigInteger modulus)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...]) with arbitrary large modulusstatic MultivariateRing<MultivariatePolynomialZp64>
MultivariateRingZp64(int nVariables, long modulus)
Ring of multivariate polynomials over Zp machine integers (Zp[x1, x2, ...])static MultivariateRing<MultivariatePolynomialZp64>
MultivariateRingZp64(int nVariables, long modulus, Comparator<DegreeVector> monomialOrder)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...])static MultivariateRing<MultivariatePolynomialZp64>
MultivariateRingZp64(int nVariables, IntegersZp64 modulus)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...])static MultivariateRing<MultivariatePolynomialZp64>
MultivariateRingZp64(int nVariables, IntegersZp64 modulus, Comparator<DegreeVector> monomialOrder)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...])static <Poly extends IPolynomial<Poly>>
IPolynomialRing<Poly>PolynomialRing(Poly factory)
Generic factory for polynomial ringstatic <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>
QuotientRing<Term,Poly>QuotientRing(MultivariateRing<Poly> baseRing, Ideal<Term,Poly> ideal)
Quotient ringbaseRing/<ideal>
static <uPoly extends IUnivariatePolynomial<uPoly>>
SimpleFieldExtension<uPoly>SimpleFieldExtension(uPoly minimalPolynomial)
Returns a simple field extension generated by given minimal polynomialstatic <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>SplittingField(sPoly polynomial)
Splitting field of a given polynomial.static <uPoly extends IUnivariatePolynomial<uPoly>>
SimpleFieldExtension<uPoly>UnivariateQuotientRing(uPoly modulus)
Deprecated.static <E> UnivariateRing<UnivariatePolynomial<E>>
UnivariateRing(Ring<E> coefficientRing)
Ring of univariate polynomials over specified coefficient ringstatic <Poly extends IUnivariatePolynomial<Poly>>
UnivariateRing<Poly>UnivariateRing(Poly factory)
Ring of univariate polynomials with specified factorystatic UnivariateRing<UnivariatePolynomial<BigInteger>>
UnivariateRingZp(BigInteger modulus)
Ring of univariate polynomials over Zp integers (Zp[x]) with arbitrary large modulusstatic UnivariateRing<UnivariatePolynomialZp64>
UnivariateRingZp64(long modulus)
Ring of univariate polynomials over Zp integers (Zp[x])static UnivariateRing<UnivariatePolynomialZp64>
UnivariateRingZp64(IntegersZp64 modulus)
Ring of univariate polynomials over Zp integers (Zp[x])static IntegersZp
Zp(long modulus)
Ring of integers modulomodulus
(arbitrary large modulus)static IntegersZp
Zp(BigInteger modulus)
Ring of integers modulomodulus
(arbitrary large modulus)static IntegersZp64
Zp64(long modulus)
Ring of integers modulomodulus
(with modulus < 2^63)
-
-
-
Field Detail
-
Z
public static final Integers Z
Ring of integers (Z)
-
Q
public static final Rationals<BigInteger> Q
Field of rationals (Q)
-
GaussianRationals
public static AlgebraicNumberField<UnivariatePolynomial<Rational<BigInteger>>> GaussianRationals
Field of Gaussian rationals (rational complex numbers).
-
GaussianIntegers
public static AlgebraicNumberField<UnivariatePolynomial<BigInteger>> GaussianIntegers
Ring of Gaussian integers (integer complex numbers).
-
UnivariateRingZ
public static final UnivariateRing<UnivariatePolynomial<BigInteger>> UnivariateRingZ
Ring of univariate polynomials over integers (Z[x])
-
UnivariateRingQ
public static final UnivariateRing<UnivariatePolynomial<Rational<BigInteger>>> UnivariateRingQ
Ring of univariate polynomials over rationals (Q[x])
-
-
Method Detail
-
Frac
public static <E> Rationals<E> Frac(Ring<E> ring)
Ring of rational functions over specified ring- Parameters:
ring
- the ring that numerators and denominators belong to
-
Zp64
public static IntegersZp64 Zp64(long modulus)
Ring of integers modulomodulus
(with modulus < 2^63)- Parameters:
modulus
- the modulus
-
Zp
public static IntegersZp Zp(long modulus)
Ring of integers modulomodulus
(arbitrary large modulus)- Parameters:
modulus
- the modulus (arbitrary large)
-
Zp
public static IntegersZp Zp(BigInteger modulus)
Ring of integers modulomodulus
(arbitrary large modulus)- Parameters:
modulus
- the modulus (arbitrary large)
-
GF
public static FiniteField<UnivariatePolynomialZp64> GF(long prime, int exponent)
Galois field with the cardinalityprime ^ exponent
(with prime < 2^63).- Parameters:
prime
- the integer prime modulusexponent
- the exponent (degree of modulo polynomial)
-
GF
public static FiniteField<UnivariatePolynomial<BigInteger>> GF(BigInteger prime, int exponent)
Galois field with the cardinalityprime ^ exponent
for arbitrary largeprime
- Parameters:
prime
- the integer (arbitrary large) prime modulusexponent
- the exponent (degree of modulo polynomial)
-
GF
public static <Poly extends IUnivariatePolynomial<Poly>> FiniteField<Poly> GF(Poly irreducible)
Galois field with the specified minimal polynomial. Note: there is no explicit check that minimal polynomial is irreducible- Parameters:
irreducible
- irreducible univariate polynomial
-
AlgebraicNumberField
public static <Poly extends IUnivariatePolynomial<Poly>> AlgebraicNumberField<Poly> AlgebraicNumberField(Poly minimalPoly)
Algebraic number field generated by the specified minimal polynomial
-
GaussianNumbers
public static <E> AlgebraicNumberField<UnivariatePolynomial<E>> GaussianNumbers(Ring<E> ring)
Gaussian numbers for a given ring (that is ring adjoined with imaginary unit)
-
UnivariateQuotientRing
@Deprecated public static <uPoly extends IUnivariatePolynomial<uPoly>> SimpleFieldExtension<uPoly> UnivariateQuotientRing(uPoly modulus)
Deprecated.Quotient ringbaseRing/<modulus>
-
SimpleFieldExtension
public static <uPoly extends IUnivariatePolynomial<uPoly>> SimpleFieldExtension<uPoly> SimpleFieldExtension(uPoly minimalPolynomial)
Returns a simple field extension generated by given minimal polynomial
-
MultipleFieldExtension
public static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> MultipleFieldExtension<Term,mPoly,sPoly> MultipleFieldExtension(sPoly... minimalPolynomials)
Multiple field extension generated by given algebraic elements represented by their minimal polynomials (not tested that they are irreducible)
-
SplittingField
public static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> MultipleFieldExtension<Term,mPoly,sPoly> SplittingField(sPoly polynomial)
Splitting field of a given polynomial.
-
UnivariateRing
public static <E> UnivariateRing<UnivariatePolynomial<E>> UnivariateRing(Ring<E> coefficientRing)
Ring of univariate polynomials over specified coefficient ring- Parameters:
coefficientRing
- the coefficient ring
-
UnivariateRing
public static <Poly extends IUnivariatePolynomial<Poly>> UnivariateRing<Poly> UnivariateRing(Poly factory)
Ring of univariate polynomials with specified factory- Parameters:
factory
- factory
-
UnivariateRingZp64
public static UnivariateRing<UnivariatePolynomialZp64> UnivariateRingZp64(long modulus)
Ring of univariate polynomials over Zp integers (Zp[x])- Parameters:
modulus
- the modulus
-
UnivariateRingZp64
public static UnivariateRing<UnivariatePolynomialZp64> UnivariateRingZp64(IntegersZp64 modulus)
Ring of univariate polynomials over Zp integers (Zp[x])- Parameters:
modulus
- the modulus
-
UnivariateRingZp
public static UnivariateRing<UnivariatePolynomial<BigInteger>> UnivariateRingZp(BigInteger modulus)
Ring of univariate polynomials over Zp integers (Zp[x]) with arbitrary large modulus- Parameters:
modulus
- the modulus (arbitrary large)
-
MultivariateRing
public static <E> MultivariateRing<MultivariatePolynomial<E>> MultivariateRing(int nVariables, Ring<E> coefficientRing, Comparator<DegreeVector> monomialOrder)
Ring of multivariate polynomials with specified number of variables over specified coefficient ring- Parameters:
nVariables
- the number of variablescoefficientRing
- the coefficient ringmonomialOrder
- the monomial order
-
MultivariateRing
public static <E> MultivariateRing<MultivariatePolynomial<E>> MultivariateRing(int nVariables, Ring<E> coefficientRing)
Ring of multivariate polynomials with specified number of variables over specified coefficient ring- Parameters:
nVariables
- the number of variablescoefficientRing
- the coefficient ring
-
MultivariateRing
public static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>> MultivariateRing<Poly> MultivariateRing(Poly factory)
Ring of multivariate polynomials with specified factory- Parameters:
factory
- factory
-
MultivariateRingZ
public static MultivariateRing<MultivariatePolynomial<BigInteger>> MultivariateRingZ(int nVariables)
Ring of multivariate polynomials over integers (Z[x1, x2, ...])- Parameters:
nVariables
- the number of variables
-
MultivariateRingQ
public static MultivariateRing<MultivariatePolynomial<Rational<BigInteger>>> MultivariateRingQ(int nVariables)
Ring of multivariate polynomials over rationals (Q[x1, x2, ...])- Parameters:
nVariables
- the number of variables
-
MultivariateRingZp64
public static MultivariateRing<MultivariatePolynomialZp64> MultivariateRingZp64(int nVariables, long modulus, Comparator<DegreeVector> monomialOrder)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...])- Parameters:
nVariables
- the number of variablesmodulus
- the modulusmonomialOrder
- the monomial order
-
MultivariateRingZp64
public static MultivariateRing<MultivariatePolynomialZp64> MultivariateRingZp64(int nVariables, long modulus)
Ring of multivariate polynomials over Zp machine integers (Zp[x1, x2, ...])- Parameters:
nVariables
- the number of variablesmodulus
- the modulus
-
MultivariateRingZp64
public static MultivariateRing<MultivariatePolynomialZp64> MultivariateRingZp64(int nVariables, IntegersZp64 modulus, Comparator<DegreeVector> monomialOrder)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...])- Parameters:
nVariables
- the number of variablesmodulus
- the modulusmonomialOrder
- monomial order
-
MultivariateRingZp64
public static MultivariateRing<MultivariatePolynomialZp64> MultivariateRingZp64(int nVariables, IntegersZp64 modulus)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...])- Parameters:
nVariables
- the number of variablesmodulus
- the modulus
-
MultivariateRingZp
public static MultivariateRing<MultivariatePolynomial<BigInteger>> MultivariateRingZp(int nVariables, BigInteger modulus)
Ring of multivariate polynomials over Zp integers (Zp[x1, x2, ...]) with arbitrary large modulus- Parameters:
nVariables
- the number of variablesmodulus
- the modulus (arbitrary large)
-
PolynomialRing
public static <Poly extends IPolynomial<Poly>> IPolynomialRing<Poly> PolynomialRing(Poly factory)
Generic factory for polynomial ring
-
QuotientRing
public static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>> QuotientRing<Term,Poly> QuotientRing(MultivariateRing<Poly> baseRing, Ideal<Term,Poly> ideal)
Quotient ringbaseRing/<ideal>
-
-