Package edu.jas.gbufd
Class GBFactory
- java.lang.Object
-
- edu.jas.gbufd.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
GroebnerBaseinterface use theGBFactory. It will select an appropriate implementation based on the types of polynomial coefficients C. The method to obtain an implementation isgetImplementation().getImplementation()returns an object of a class which implements theGroebnerBaseinterface, more precisely an object of abstract classGroebnerBaseAbstract.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);
- Author:
- Heinz Kredel
- See Also:
GroebnerBase,GBAlgorithmBuilder
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGBFactory.AlgoAlgorithm indicators: igb = integerGB, egb = e-GB, dgb = d-GB, qgb = fraction coefficients GB, ffgb = fraction free GB.
-
Constructor Summary
Constructors Modifier Constructor Description protectedGBFactory()Protected factory constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<C>getImplementation()Determine suitable implementation of GB algorithms, no factory case.static GroebnerBaseAbstract<BigInteger>getImplementation(BigInteger fac)Determine suitable implementation of GB algorithms, case BigInteger.static GroebnerBaseAbstract<BigInteger>getImplementation(BigInteger fac, PairList<BigInteger> pl)Determine suitable implementation of GB algorithms, case BigInteger.static GroebnerBaseAbstract<BigInteger>getImplementation(BigInteger fac, GBFactory.Algo a)Determine suitable implementation of GB algorithms, case BigInteger.static GroebnerBaseAbstract<BigInteger>getImplementation(BigInteger fac, GBFactory.Algo a, PairList<BigInteger> pl)Determine suitable implementation of GB algorithms, case BigInteger.static GroebnerBaseAbstract<BigRational>getImplementation(BigRational fac)Determine suitable implementation of GB algorithms, case BigRational.static GroebnerBaseAbstract<BigRational>getImplementation(BigRational fac, PairList<BigRational> pl)Determine suitable implementation of GB algorithms, case BigRational.static GroebnerBaseAbstract<BigRational>getImplementation(BigRational fac, GBFactory.Algo a)Determine suitable implementation of GB algorithms, case BigRational.static GroebnerBaseAbstract<BigRational>getImplementation(BigRational fac, GBFactory.Algo a, PairList<BigRational> pl)Determine suitable implementation of GB algorithms, case BigRational.static GroebnerBaseAbstract<ModInteger>getImplementation(ModIntegerRing fac)Determine suitable implementation of GB algorithms, case ModInteger.static GroebnerBaseAbstract<ModInteger>getImplementation(ModIntegerRing fac, PairList<ModInteger> pl)Determine suitable implementation of GB algorithms, case ModInteger.static GroebnerBaseAbstract<ModInt>getImplementation(ModIntRing fac)Determine suitable implementation of GB algorithms, case ModInt.static GroebnerBaseAbstract<ModInt>getImplementation(ModIntRing fac, PairList<ModInt> pl)Determine suitable implementation of GB algorithms, case ModInt.static GroebnerBaseAbstract<ModLong>getImplementation(ModLongRing fac)Determine suitable implementation of GB algorithms, case ModLong.static GroebnerBaseAbstract<ModLong>getImplementation(ModLongRing fac, PairList<ModLong> pl)Determine suitable implementation of GB algorithms, case ModLong.static <C extends RingElem<C>>
GroebnerBaseAbstract<Product<C>>getImplementation(ProductRing<C> fac)Determine suitable implementation of GB algorithms, case regular rings.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<GenPolynomial<C>>getImplementation(GenPolynomialRing<C> fac)Determine suitable implementation of GB algorithms, case (recursive) polynomial.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.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<GenPolynomial<C>>getImplementation(GenPolynomialRing<C> fac, GBFactory.Algo a)Determine suitable implementation of GB algorithms, case (recursive) polynomial.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.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<C>getImplementation(RingFactory<C> fac)Determine suitable implementation of GB algorithms, other cases.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<C>getImplementation(RingFactory<C> fac, PairList<C> pl)Determine suitable implementation of GB algorithms, other cases.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<Quotient<C>>getImplementation(QuotientRing<C> fac)Determine suitable implementation of GB algorithms, case Quotient coefficients.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.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<Quotient<C>>getImplementation(QuotientRing<C> fac, GBFactory.Algo a)Determine suitable implementation of GB algorithms, case Quotient coefficients.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.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<GenPolynomial<C>>getProxy(GenPolynomialRing<C> fac)Determine suitable parallel/concurrent implementation of GB algorithms if possible.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<C>getProxy(RingFactory<C> fac)Determine suitable parallel/concurrent implementation of GB algorithms if possible.static <C extends GcdRingElem<C>>
GroebnerBaseAbstract<C>getProxy(RingFactory<C> fac, PairList<C> pl)Determine suitable parallel/concurrent implementation of GB algorithms if possible.
-
-
-
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<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.
-
-