Package edu.jas.gbufd

Class GBFactory

java.lang.Object
edu.jas.gbufd.GBFactory

public class GBFactory extends Object
Groebner bases algorithms factory. Select appropriate Groebner bases engine based on the coefficient types.

Usage: To create objects that implement the GroebnerBase interface use the GBFactory. It will select an appropriate implementation based on the types of polynomial coefficients C. The method to obtain an implementation is getImplementation(). getImplementation() returns an object of a class which implements the GroebnerBase interface, more precisely an object of abstract class GroebnerBaseAbstract.

 GroebnerBase<CT> engine;
 engine = GBFactory.<CT> getImplementation(cofac);
 c = engine.GB(A);
 

For example, if the coefficient type is BigInteger, the usage looks like

 BigInteger cofac = new BigInteger();
 GroebnerBase<BigInteger> engine;
 engine = GBFactory.getImplementation(cofac);
 c = engine.GB(A);
 
See Also:
  • Field Details

    • logger

      private static final org.apache.logging.log4j.Logger logger
  • Constructor Details

    • GBFactory

      protected GBFactory()
      Protected factory constructor.
  • Method Details

    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<C> getImplementation()
      Determine suitable implementation of GB algorithms, no factory case.
      Returns:
      GB algorithm implementation for field coefficients.
    • getImplementation

      public static GroebnerBaseAbstract<ModLong> getImplementation(ModLongRing fac)
      Determine suitable implementation of GB algorithms, case ModLong.
      Parameters:
      fac - ModLongRing.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<ModLong> getImplementation(ModLongRing fac, PairList<ModLong> pl)
      Determine suitable implementation of GB algorithms, case ModLong.
      Parameters:
      fac - ModLongRing.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<ModInt> getImplementation(ModIntRing fac)
      Determine suitable implementation of GB algorithms, case ModInt.
      Parameters:
      fac - ModIntRing.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<ModInt> getImplementation(ModIntRing fac, PairList<ModInt> pl)
      Determine suitable implementation of GB algorithms, case ModInt.
      Parameters:
      fac - ModIntRing.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<ModInteger> getImplementation(ModIntegerRing fac)
      Determine suitable implementation of GB algorithms, case ModInteger.
      Parameters:
      fac - ModIntegerRing.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<ModInteger> getImplementation(ModIntegerRing fac, PairList<ModInteger> pl)
      Determine suitable implementation of GB algorithms, case ModInteger.
      Parameters:
      fac - ModIntegerRing.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigInteger> getImplementation(BigInteger fac)
      Determine suitable implementation of GB algorithms, case BigInteger.
      Parameters:
      fac - BigInteger.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigInteger> getImplementation(BigInteger fac, GBFactory.Algo a)
      Determine suitable implementation of GB algorithms, case BigInteger.
      Parameters:
      fac - BigInteger.
      a - algorithm, a = igb, egb, dgb.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigInteger> getImplementation(BigInteger fac, PairList<BigInteger> pl)
      Determine suitable implementation of GB algorithms, case BigInteger.
      Parameters:
      fac - BigInteger.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigInteger> getImplementation(BigInteger fac, GBFactory.Algo a, PairList<BigInteger> pl)
      Determine suitable implementation of GB algorithms, case BigInteger.
      Parameters:
      fac - BigInteger.
      a - algorithm, a = igb, egb, dgb.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigRational> getImplementation(BigRational fac)
      Determine suitable implementation of GB algorithms, case BigRational.
      Parameters:
      fac - BigRational.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigRational> getImplementation(BigRational fac, GBFactory.Algo a)
      Determine suitable implementation of GB algorithms, case BigRational.
      Parameters:
      fac - BigRational.
      a - algorithm, a = qgb, ffgb.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigRational> getImplementation(BigRational fac, PairList<BigRational> pl)
      Determine suitable implementation of GB algorithms, case BigRational.
      Parameters:
      fac - BigRational.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static GroebnerBaseAbstract<BigRational> getImplementation(BigRational fac, GBFactory.Algo a, PairList<BigRational> pl)
      Determine suitable implementation of GB algorithms, case BigRational.
      Parameters:
      fac - BigRational.
      a - algorithm, a = qgb, ffgb.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<Quotient<C>> getImplementation(QuotientRing<C> fac)
      Determine suitable implementation of GB algorithms, case Quotient coefficients.
      Parameters:
      fac - QuotientRing.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<Quotient<C>> getImplementation(QuotientRing<C> fac, GBFactory.Algo a)
      Determine suitable implementation of GB algorithms, case Quotient coefficients.
      Parameters:
      fac - QuotientRing.
      a - algorithm, a = qgb, ffgb.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<Quotient<C>> getImplementation(QuotientRing<C> fac, PairList<Quotient<C>> pl)
      Determine suitable implementation of GB algorithms, case Quotient coefficients.
      Parameters:
      fac - QuotientRing.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<Quotient<C>> getImplementation(QuotientRing<C> fac, GBFactory.Algo a, PairList<Quotient<C>> pl)
      Determine suitable implementation of GB algorithms, case Quotient coefficients.
      Parameters:
      fac - QuotientRing.
      a - algorithm, a = qgb, ffgb.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<GenPolynomial<C>> getImplementation(GenPolynomialRing<C> fac)
      Determine suitable implementation of GB algorithms, case (recursive) polynomial.
      Parameters:
      fac - GenPolynomialRing<C>.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<GenPolynomial<C>> getImplementation(GenPolynomialRing<C> fac, GBFactory.Algo a)
      Determine suitable implementation of GB algorithms, case (recursive) polynomial.
      Parameters:
      fac - GenPolynomialRing<C>.
      a - algorithm, a = igb or egb, dgb if fac is univariate over a field.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<GenPolynomial<C>> getImplementation(GenPolynomialRing<C> fac, PairList<GenPolynomial<C>> pl)
      Determine suitable implementation of GB algorithms, case (recursive) polynomial.
      Parameters:
      fac - GenPolynomialRing<C>.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<GenPolynomial<C>> getImplementation(GenPolynomialRing<C> fac, GBFactory.Algo a, PairList<GenPolynomial<C>> pl)
      Determine suitable implementation of GB algorithms, case (recursive) polynomial.
      Parameters:
      fac - GenPolynomialRing<C>.
      a - algorithm, a = igb or egb, dgb if fac is univariate over a field.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends RingElem<C>> GroebnerBaseAbstract<Product<C>> getImplementation(ProductRing<C> fac)
      Determine suitable implementation of GB algorithms, case regular rings.
      Parameters:
      fac - RegularRing.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<C> getImplementation(RingFactory<C> fac)
      Determine suitable implementation of GB algorithms, other cases.
      Parameters:
      fac - RingFactory<C>.
      Returns:
      GB algorithm implementation.
    • getImplementation

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<C> getImplementation(RingFactory<C> fac, PairList<C> pl)
      Determine suitable implementation of GB algorithms, other cases.
      Parameters:
      fac - RingFactory<C>.
      pl - pair selection strategy
      Returns:
      GB algorithm implementation.
    • getProxy

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<C> getProxy(RingFactory<C> fac)
      Determine suitable parallel/concurrent implementation of GB algorithms if possible.
      Parameters:
      fac - RingFactory<C>.
      Returns:
      GB proxy algorithm implementation.
    • getProxy

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<C> getProxy(RingFactory<C> fac, PairList<C> pl)
      Determine suitable parallel/concurrent implementation of GB algorithms if possible.
      Parameters:
      fac - RingFactory<C>.
      pl - pair selection strategy
      Returns:
      GB proxy algorithm implementation.
    • getProxy

      public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<GenPolynomial<C>> getProxy(GenPolynomialRing<C> fac)
      Determine suitable parallel/concurrent implementation of GB algorithms if possible.
      Parameters:
      fac - RingFactory<C>.
      Returns:
      GB proxy algorithm implementation.