Class Rings

java.lang.Object
cc.redberry.rings.Rings

public final class Rings
extends Object
Common rings.
Since:
1.0
  • Field Details

  • Method Details

    • 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)
      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>