Package edu.jas.gbufd

Class GBFactory


  • public class GBFactory
    extends java.lang.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:
    GroebnerBase, GBAlgorithmBuilder
    • Field Detail

      • logger

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

      • GBFactory

        protected GBFactory()
        Protected factory constructor.
    • Method Detail

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