Package edu.jas.ufd
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.
-