edu.jas.gbufd
Class GBFactory

java.lang.Object
  extended by 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.

Author:
Heinz Kredel
See Also:
GroebnerBase.GB(java.util.List P)
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);
 

Nested Class Summary
static class GBFactory.Algo
           
 
Constructor Summary
protected GBFactory()
          Protected factory constructor.
 
Method Summary
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, GBFactory.Algo a)
          Determine suitable implementation of GB algorithms, case BigInteger.
static GroebnerBaseAbstract<BigRational> getImplementation(BigRational fac)
          Determine suitable implementation of GB algorithms, case BigRational.
static
<C extends GcdRingElem<C>>
GroebnerBaseAbstract<GenPolynomial<C>>
getImplementation(GenPolynomialRing<C> fac)
          Determine suitable implementation of GB algorithms, case (recursive) polynomial.
static GroebnerBaseAbstract<ModInteger> getImplementation(ModIntegerRing fac)
          Determine suitable implementation of GB algorithms, case ModInteger.
static GroebnerBaseAbstract<ModLong> getImplementation(ModLongRing fac)
          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<C>
getImplementation(RingFactory<C> fac)
          Determine suitable implementation of GB algorithms, other cases.
static
<C extends GcdRingElem<C>>
GroebnerBaseAbstract<C>
getProxy(RingFactory<C> fac)
          Determine suitable concurrent implementation of GB algorithms if possible.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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

getProxy

public static <C extends GcdRingElem<C>> GroebnerBaseAbstract<C> getProxy(RingFactory<C> fac)
Determine suitable concurrent implementation of GB algorithms if possible.

Parameters:
fac - RingFactory<C>.
Returns:
GB proxy algorithm implementation.