Class FactorFactory
java.lang.Object
edu.jas.ufd.FactorFactory
edu.jas.application.FactorFactory
Factorization algorithms factory. Select appropriate factorization engine
based on the coefficient types.
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);
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <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<AlgebraicNumber<C>> getImplementation(AlgebraicNumberRing<C> fac) Determine suitable implementation of factorization algorithms, case AlgebraicNumber<C>.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 <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.static <C extends GcdRingElem<C>>
FactorAbstract<Quotient<C>> getImplementation(QuotientRing<C> fac) Determine suitable implementation of factorization algorithms, case Quotient<C>.Methods inherited from class FactorFactory
getImplementation, getImplementation, getImplementation, getImplementation, getImplementation
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger
-
-
Constructor Details
-
FactorFactory
protected FactorFactory()Protected factory constructor.
-
-
Method Details
-
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>. UserecursiveFactors().- 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> & 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
Determine suitable implementation of factorization algorithms, other cases.- Type Parameters:
C- coefficient type- Parameters:
fac- RingFactory<C>.- Returns:
- factorization algorithm implementation.
-