Class 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 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:
    Factorization.factors(edu.jas.poly.GenPolynomial P), FactorFactory.getImplementation(edu.jas.structure.RingFactory P)
    • Field Detail

      • logger

        private static final org.apache.logging.log4j.Logger logger
    • 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>. 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> & RationalFactorAbstract<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> & RationalFactorAbstract<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.