public class SGCDFactory extends java.lang.Object
Usage: To create objects that implement the
GreatestCommonDivisor
interface use the
SGCDFactory
. It will select an appropriate implementation based
on the types of polynomial coefficients C. There are two methods to obtain an
implementation: getProxy()
and getImplementation()
.
getImplementation()
returns an object of a class which
implements the GreatestCommonDivisor
interface.
getProxy()
returns a proxy object of a class which implements
the GreatestCommonDivisor
interface. The proxy will run two
implementations in parallel, return the first computed result and cancel the
second running task. On systems with one CPU the computing time will be two
times the time of the fastest algorithm implementation. On systems with more
than two CPUs the computing time will be the time of the fastest algorithm
implementation.
GreatestCommonDivisor<CT> engine; engine = SGCDFactory.<CT> getImplementation(cofac); or engine = SGCDFactory.<CT> getProxy(cofac); c = engine.leftGcd(a, b);
For example, if the coefficient type is BigInteger
, the usage
looks like
BigInteger cofac = new BigInteger(); GreatestCommonDivisor<BigInteger> engine; engine = SGCDFactory.getImplementation(cofac); or engine = SGCDFactory.getProxy(cofac); c = engine.leftGcd(a, b);
GreatestCommonDivisor.leftGcd(edu.jas.poly.GenSolvablePolynomial
P, edu.jas.poly.GenSolvablePolynomial S)
Modifier | Constructor and Description |
---|---|
protected |
SGCDFactory()
Protected factory constructor.
|
Modifier and Type | Method and Description |
---|---|
static GreatestCommonDivisorAbstract<BigInteger> |
getImplementation(BigInteger fac)
Determine suitable implementation of gcd algorithms, case BigInteger.
|
static GreatestCommonDivisorAbstract<BigRational> |
getImplementation(BigRational fac)
Determine suitable implementation of gcd algorithms, case BigRational.
|
static GreatestCommonDivisorAbstract<ModInteger> |
getImplementation(ModIntegerRing fac)
Determine suitable implementation of gcd algorithms, case ModInteger.
|
static GreatestCommonDivisorAbstract<ModLong> |
getImplementation(ModLongRing fac)
Determine suitable implementation of gcd algorithms, case ModLong.
|
static <C extends GcdRingElem<C>> |
getImplementation(RingFactory<C> fac)
Determine suitable implementation of gcd algorithms, other cases.
|
static GreatestCommonDivisorAbstract<BigInteger> |
getProxy(BigInteger fac)
Determine suitable proxy for gcd algorithms, case BigInteger.
|
static GreatestCommonDivisorAbstract<BigRational> |
getProxy(BigRational fac)
Determine suitable proxy for gcd algorithms, case BigRational.
|
static GreatestCommonDivisorAbstract<ModInteger> |
getProxy(ModIntegerRing fac)
Determine suitable proxy for gcd algorithms, case ModInteger.
|
static GreatestCommonDivisorAbstract<ModLong> |
getProxy(ModLongRing fac)
Determine suitable proxy for gcd algorithms, case ModLong.
|
static <C extends GcdRingElem<C>> |
getProxy(RingFactory<C> fac)
Determine suitable proxy for gcd algorithms, other cases.
|
protected SGCDFactory()
public static GreatestCommonDivisorAbstract<ModLong> getImplementation(ModLongRing fac)
fac
- ModLongRing.public static GreatestCommonDivisorAbstract<ModLong> getProxy(ModLongRing fac)
fac
- ModLongRing.public static GreatestCommonDivisorAbstract<ModInteger> getImplementation(ModIntegerRing fac)
fac
- ModIntegerRing.public static GreatestCommonDivisorAbstract<ModInteger> getProxy(ModIntegerRing fac)
fac
- ModIntegerRing.public static GreatestCommonDivisorAbstract<BigInteger> getImplementation(BigInteger fac)
fac
- BigInteger.public static GreatestCommonDivisorAbstract<BigInteger> getProxy(BigInteger fac)
fac
- BigInteger.public static GreatestCommonDivisorAbstract<BigRational> getImplementation(BigRational fac)
fac
- BigRational.public static GreatestCommonDivisorAbstract<BigRational> getProxy(BigRational fac)
fac
- BigRational.public static <C extends GcdRingElem<C>> GreatestCommonDivisorAbstract<C> getImplementation(RingFactory<C> fac)
fac
- RingFactory<C>.public static <C extends GcdRingElem<C>> GreatestCommonDivisorAbstract<C> getProxy(RingFactory<C> fac)
fac
- RingFactory<C>.ComputerThreads.NO_THREADS