Class FactorFactory
java.lang.Object
edu.jas.ufd.FactorFactory
- Direct Known Subclasses:
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 FactorAbstract<BigInteger> Determine suitable implementation of factorization algorithm, case BigInteger.static FactorAbstract<BigRational> Determine suitable implementation of factorization algorithms, case BigRational.static FactorAbstract<ModInteger> Determine suitable implementation of factorization algorithm, case ModInteger.static FactorAbstract<ModInt> Determine suitable implementation of factorization algorithm, case ModInteger.static FactorAbstract<ModLong> Determine suitable implementation of factorization algorithm, case ModInteger.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>>
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>.
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger
-
-
Constructor Details
-
FactorFactory
protected FactorFactory()Protected factory constructor.
-
-
Method Details
-
getImplementation
Determine suitable implementation of factorization algorithm, case ModInteger.- Parameters:
fac- ModIntegerRing.- Returns:
- factorization algorithm implementation.
-
getImplementation
Determine suitable implementation of factorization algorithm, case ModInteger.- Parameters:
fac- ModIntegerRing.- Returns:
- factorization algorithm implementation.
-
getImplementation
Determine suitable implementation of factorization algorithm, case ModInteger.- Parameters:
fac- ModIntegerRing.- Returns:
- factorization algorithm implementation.
-
getImplementation
Determine suitable implementation of factorization algorithm, case BigInteger.- Parameters:
fac- BigInteger.- Returns:
- factorization algorithm implementation.
-
getImplementation
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>. UserecursiveFactors().- Type Parameters:
C- coefficient type, e.g. BigRational, ModInteger.- Parameters:
fac- GenPolynomialRing<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.
-