## Class 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 polynomial
`static <E> Rationals<E>` `Frac​(Ring<E> ring)`
Ring of rational functions over specified ring
`static <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 cardinality `prime ^ exponent` (with prime < 2^63).
`static FiniteField<UnivariatePolynomial<BigInteger>>` ```GF​(BigInteger prime, int exponent)```
Galois field with the cardinality `prime ^ exponent` for arbitrary large `prime`
`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 ring
`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
`static <Term extends AMonomial<Term>,​Poly extends AMultivariatePolynomial<Term,​Poly>>MultivariateRing<Poly>` `MultivariateRing​(Poly factory)`
Ring of multivariate polynomials with specified factory
`static 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 modulus
`static 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 ring
`static <Term extends AMonomial<Term>,​Poly extends AMultivariatePolynomial<Term,​Poly>>QuotientRing<Term,​Poly>` ```QuotientRing​(MultivariateRing<Poly> baseRing, Ideal<Term,​Poly> ideal)```
Quotient ring `baseRing/<ideal> `
`static <uPoly extends IUnivariatePolynomial<uPoly>>SimpleFieldExtension<uPoly>` `SimpleFieldExtension​(uPoly minimalPolynomial)`
Returns a simple field extension generated by given minimal polynomial
`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.
`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 ring
`static <Poly extends IUnivariatePolynomial<Poly>>UnivariateRing<Poly>` `UnivariateRing​(Poly factory)`
Ring of univariate polynomials with specified factory
`static UnivariateRing<UnivariatePolynomial<BigInteger>>` `UnivariateRingZp​(BigInteger modulus)`
Ring of univariate polynomials over Zp integers (Zp[x]) with arbitrary large modulus
`static 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 modulo `modulus` (arbitrary large modulus)
`static IntegersZp` `Zp​(BigInteger modulus)`
Ring of integers modulo `modulus` (arbitrary large modulus)
`static IntegersZp64` `Zp64​(long modulus)`
Ring of integers modulo `modulus` (with modulus < 2^63)
• ### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### 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 modulo `modulus` (with modulus < 2^63)
Parameters:
`modulus` - the modulus
• #### Zp

`public static IntegersZp Zp​(long modulus)`
Ring of integers modulo `modulus` (arbitrary large modulus)
Parameters:
`modulus` - the modulus (arbitrary large)
• #### Zp

`public static IntegersZp Zp​(BigInteger modulus)`
Ring of integers modulo `modulus` (arbitrary large modulus)
Parameters:
`modulus` - the modulus (arbitrary large)
• #### GF

```public static FiniteField<UnivariatePolynomialZp64> GF​(long prime,
int exponent)```
Galois field with the cardinality `prime ^ exponent` (with prime < 2^63).
Parameters:
`prime` - the integer prime modulus
`exponent` - the exponent (degree of modulo polynomial)
• #### GF

```public static FiniteField<UnivariatePolynomial<BigInteger>> GF​(BigInteger prime,
int exponent)```
Galois field with the cardinality `prime ^ exponent` for arbitrary large `prime`
Parameters:
`prime` - the integer (arbitrary large) prime modulus
`exponent` - 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 ring `baseRing/<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 variables
`coefficientRing` - the coefficient ring
`monomialOrder` - 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 variables
`coefficientRing` - 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 variables
`modulus` - the modulus
`monomialOrder` - 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 variables
`modulus` - 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 variables
`modulus` - the modulus
`monomialOrder` - 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 variables
`modulus` - 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 variables
`modulus` - 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 ring `baseRing/<ideal> `