Package edu.jas.application
Class FactorFactory
- java.lang.Object
-
- edu.jas.ufd.FactorFactory
-
- edu.jas.application.FactorFactory
-
public class FactorFactory extends FactorFactory
Factorization algorithms factory. Select appropriate factorization engine based on the coefficient types.Usage: To create objects that implement the
Factorization
interface use theFactorFactory
. It will select an appropriate implementation based on the types of polynomial coefficients C. To obtain an implementation usegetImplementation()
, it returns an object of a class which extends theFactorAbstract
class which implements theFactorization
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);
- Author:
- Heinz Kredel
- See Also:
Factorization.factors(edu.jas.poly.GenPolynomial P)
,FactorFactory.getImplementation(edu.jas.structure.RingFactory P)
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
FactorFactory()
Protected factory constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description 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<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 edu.jas.ufd.FactorFactory
getImplementation, getImplementation, getImplementation, getImplementation, getImplementation
-
-
-
-
Constructor Detail
-
FactorFactory
protected FactorFactory()
Protected factory constructor.
-
-
Method Detail
-
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
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.
-
-