Package edu.jas.gbufd
Class GBFactory
java.lang.Object
edu.jas.gbufd.GBFactory
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
Algorithm indicators: igb = integerGB, egb = e-GB, dgb = d-GB, qgb = fraction coefficients GB, ffgb = fraction free GB. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <C extends GcdRingElem<C>>
GroebnerBaseAbstract<C> Determine suitable implementation of GB algorithms, no factory case.static GroebnerBaseAbstract
<BigInteger> 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> 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> 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> 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> 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> 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> 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.
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger
-
-
Constructor Details
-
GBFactory
protected GBFactory()Protected factory constructor.
-
-
Method Details
-
getImplementation
Determine suitable implementation of GB algorithms, no factory case.- Returns:
- GB algorithm implementation for field coefficients.
-
getImplementation
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
Determine suitable implementation of GB algorithms, case ModInt.- Parameters:
fac
- ModIntRing.- Returns:
- GB algorithm implementation.
-
getImplementation
Determine suitable implementation of GB algorithms, case ModInt.- Parameters:
fac
- ModIntRing.pl
- pair selection strategy- Returns:
- GB algorithm implementation.
-
getImplementation
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
Determine suitable implementation of GB algorithms, case BigInteger.- Parameters:
fac
- BigInteger.- Returns:
- GB algorithm implementation.
-
getImplementation
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
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
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.
-