Class Rings


  • public final class Rings
    extends Object
    Common rings.
    Since:
    1.0
    • 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
      • 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)
      • 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
      • 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
      • 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)
        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