edu.jas.ufd
Class FactorFactory

java.lang.Object
  extended by edu.jas.ufd.FactorFactory
Direct Known Subclasses:
FactorFactory

public class FactorFactory
extends java.lang.Object

Factorization algorithms factory. Select appropriate factorization engine based on the coefficient types.

Author:
Heinz Kredel
See Also:
Factorization.factors(edu.jas.poly.GenPolynomial P)
Usage
To create objects that implement the Factorization interface use the FactorFactory. It will select an appropriate implementation based on the types of polynomial coefficients C. To obtain an implementation use getImplementation(), it returns an object of a class which extends the FactorAbstract class which implements the Factorization interface.
 Factorization<CT> engine;
 engine = FactorFactory.<CT> getImplementation(cofac);
 c = engine.factors(a);
 
For example, if the coefficient type is BigInteger, the usage looks like
 BigInteger cofac = new BigInteger();
 Factorization<BigInteger> engine;
 engine = FactorFactory.getImplementation(cofac);
 Sm = engine.factors(poly);
 

Constructor Summary
protected FactorFactory()
          Protected factory constructor.
 
Method Summary
static
<C extends GcdRingElem<C>>
FactorAbstract<AlgebraicNumber<C>>
getImplementation(AlgebraicNumberRing<C> fac)
          Determine suitable implementation of factorization algorithms, case AlgebraicNumber<C>.
static FactorAbstract<BigInteger> getImplementation(BigInteger fac)
          Determine suitable implementation of factorization algorithm, case BigInteger.
static FactorAbstract<BigRational> getImplementation(BigRational fac)
          Determine suitable implementation of factorization algorithms, case BigRational.
static
<C extends GcdRingElem<C>>
FactorAbstract<Complex<C>>
getImplementation(ComplexRing<C> fac)
          Determine suitable implementation of factorization algorithms, case Complex<C>.
static
<C extends GcdRingElem<C>>
FactorAbstract<C>
getImplementation(GenPolynomialRing<C> fac)
          Determine suitable implementation of factorization algorithms, case recursive GenPolynomial<C>.
static FactorAbstract<ModInteger> getImplementation(ModIntegerRing fac)
          Determine suitable implementation of factorization algorithm, case ModInteger.
static FactorAbstract<ModLong> getImplementation(ModLongRing fac)
          Determine suitable implementation of factorization algorithm, case ModInteger.
static
<C extends GcdRingElem<C>>
FactorAbstract<Quotient<C>>
getImplementation(QuotientRing<C> fac)
          Determine suitable implementation of factorization algorithms, case Quotient<C>.
static
<C extends GcdRingElem<C> & Rational>
FactorAbstract<RealAlgebraicNumber<C>>
getImplementation(RealAlgebraicRing<C> fac)
          Determine suitable implementation of factorization algorithms, case RealAlgebraicNumber<C>.
static
<C extends GcdRingElem<C>>
FactorAbstract<C>
getImplementation(RingFactory<C> fac)
          Determine suitable implementation of factorization algorithms, other cases.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FactorFactory

protected FactorFactory()
Protected factory constructor.

Method Detail

getImplementation

public static FactorAbstract<ModInteger> getImplementation(ModIntegerRing fac)
Determine suitable implementation of factorization algorithm, case ModInteger.

Parameters:
fac - ModIntegerRing.
Returns:
factorization algorithm implementation.

getImplementation

public static FactorAbstract<ModLong> getImplementation(ModLongRing fac)
Determine suitable implementation of factorization algorithm, case ModInteger.

Parameters:
fac - ModIntegerRing.
Returns:
factorization algorithm implementation.

getImplementation

public static FactorAbstract<BigInteger> getImplementation(BigInteger fac)
Determine suitable implementation of factorization algorithm, case BigInteger.

Parameters:
fac - BigInteger.
Returns:
factorization algorithm implementation.

getImplementation

public static FactorAbstract<BigRational> getImplementation(BigRational fac)
Determine suitable implementation of factorization algorithms, case BigRational.

Parameters:
fac - BigRational.
Returns:
factorization algorithm implementation.

getImplementation

public static <C extends GcdRingElem<C>> FactorAbstract<AlgebraicNumber<C>> getImplementation(AlgebraicNumberRing<C> fac)
Determine suitable implementation of factorization algorithms, case AlgebraicNumber<C>.

Type Parameters:
C - coefficient type, e.g. BigRational, ModInteger.
Parameters:
fac - AlgebraicNumberRing<C>.
Returns:
factorization algorithm implementation.

getImplementation

public static <C extends GcdRingElem<C>> FactorAbstract<Complex<C>> getImplementation(ComplexRing<C> fac)
Determine suitable implementation of factorization algorithms, case Complex<C>.

Type Parameters:
C - coefficient type, e.g. BigRational, ModInteger.
Parameters:
fac - ComplexRing<C>.
Returns:
factorization algorithm implementation.

getImplementation

public static <C extends GcdRingElem<C>> FactorAbstract<Quotient<C>> getImplementation(QuotientRing<C> fac)
Determine suitable implementation of factorization algorithms, case Quotient<C>.

Type Parameters:
C - coefficient type, e.g. BigRational, ModInteger.
Parameters:
fac - QuotientRing<C>.
Returns:
factorization algorithm implementation.

getImplementation

public static <C extends GcdRingElem<C>> FactorAbstract<C> getImplementation(GenPolynomialRing<C> fac)
Determine suitable implementation of factorization algorithms, case recursive GenPolynomial<C>. Use recursiveFactors().

Type Parameters:
C - coefficient type, e.g. BigRational, ModInteger.
Parameters:
fac - GenPolynomialRing<C>.
Returns:
factorization algorithm implementation.

getImplementation

public static <C extends GcdRingElem<C> & Rational> FactorAbstract<RealAlgebraicNumber<C>> getImplementation(RealAlgebraicRing<C> fac)
Determine suitable implementation of factorization algorithms, case RealAlgebraicNumber<C>.

Type Parameters:
C - coefficient type, e.g. BigRational.
Parameters:
fac - RealAlgebraicRing<C>.
Returns:
factorization algorithm implementation.

getImplementation

public static <C extends GcdRingElem<C>> FactorAbstract<C> getImplementation(RingFactory<C> fac)
Determine suitable implementation of factorization algorithms, other cases.

Type Parameters:
C - coefficient type
Parameters:
fac - RingFactory<C>.
Returns:
factorization algorithm implementation.