Package edu.jas.ufd

Class FactorAbstract<C extends GcdRingElem<C>>

  • Type Parameters:
    C - coefficient type
    All Implemented Interfaces:
    Factorization<C>, java.io.Serializable
    Direct Known Subclasses:
    FactorAbsolute, FactorInteger, FactorQuotient, FactorRealAlgebraic, FactorRealReal

    public abstract class FactorAbstract<C extends GcdRingElem<C>>
    extends java.lang.Object
    implements Factorization<C>
    Abstract factorization algorithms class. This class contains implementations of all methods of the Factorization interface, except the method for factorization of a squarefree polynomial. The methods to obtain squarefree polynomials delegate the computation to the GreatestCommonDivisor classes and are included for convenience.
    See Also:
    FactorFactory, Serialized Form
    • Constructor Detail

      • FactorAbstract

        protected FactorAbstract()
        No argument constructor.
      • FactorAbstract

        public FactorAbstract​(RingFactory<C> cfac)
        Constructor.
        Parameters:
        cfac - coefficient ring factory.
    • Method Detail

      • toString

        public java.lang.String toString()
        Get the String representation.
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • isIrreducible

        public boolean isIrreducible​(GenPolynomial<C> P)
        GenPolynomial test if is irreducible.
        Specified by:
        isIrreducible in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - GenPolynomial.
        Returns:
        true if P is irreducible, else false.
      • isReducible

        public boolean isReducible​(GenPolynomial<C> P)
        GenPolynomial test if a non trivial factorization exists.
        Specified by:
        isReducible in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - GenPolynomial.
        Returns:
        true if P is reducible, else false.
      • isSquarefree

        public boolean isSquarefree​(GenPolynomial<C> P)
        GenPolynomial test if is squarefree.
        Specified by:
        isSquarefree in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - GenPolynomial.
        Returns:
        true if P is squarefree, else false.
      • factorsSquarefreeOptimize

        public java.util.List<GenPolynomial<C>> factorsSquarefreeOptimize​(GenPolynomial<C> P)
        GenPolynomial factorization of a multivariate squarefree polynomial, using Kronecker substitution and variable order optimization.
        Parameters:
        P - squarefree and primitive! (respectively monic) multivariate GenPolynomial over the ring C.
        Returns:
        [p_1,...,p_k] with P = prod_{i=1,...,r} p_i.
      • factorsSquarefree

        public java.util.List<GenPolynomial<C>> factorsSquarefree​(GenPolynomial<C> P)
        GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.
        Specified by:
        factorsSquarefree in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - squarefree and primitive! (respectively monic) GenPolynomial.
        Returns:
        [p_1,...,p_k] with P = prod_{i=1,...,r} p_i.
      • factorsSquarefreeKronecker

        public java.util.List<GenPolynomial<C>> factorsSquarefreeKronecker​(GenPolynomial<C> P)
        GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.
        Parameters:
        P - squarefree and primitive! (respectively monic) GenPolynomial.
        Returns:
        [p_1,...,p_k] with P = prod_{i=1,...,r} p_i.
      • removeOnce

        static <T> java.util.List<T> removeOnce​(java.util.List<T> a,
                                                java.util.List<T> b)
        Remove one occurrence of elements.
        Parameters:
        a - list of objects.
        b - list of objects.
        Returns:
        remove every element of b from a, but only one occurrence. Note: not available in java.util.
      • baseFactorsRadical

        public java.util.List<GenPolynomial<C>> baseFactorsRadical​(GenPolynomial<C> P)
        Univariate GenPolynomial factorization ignoring multiplicities.
        Parameters:
        P - GenPolynomial in one variable.
        Returns:
        [p_1, ..., p_k] with P = prod_{i=1,...,k} p_i**{e_i} for some e_i.
      • baseFactors

        public java.util.SortedMap<GenPolynomial<C>,​java.lang.Long> baseFactors​(GenPolynomial<C> P)
        Univariate GenPolynomial factorization.
        Parameters:
        P - GenPolynomial in one variable.
        Returns:
        [p_1 -> e_1, ..., p_k -> e_k] with P = prod_{i=1,...,k} p_i**e_i.
      • baseFactorsSquarefree

        public abstract java.util.List<GenPolynomial<C>> baseFactorsSquarefree​(GenPolynomial<C> P)
        Univariate GenPolynomial factorization of a squarefree polynomial.
        Parameters:
        P - squarefree and primitive! GenPolynomial in one variable.
        Returns:
        [p_1, ..., p_k] with P = prod_{i=1,...,k} p_i.
      • factorsRadical

        public java.util.List<GenPolynomial<C>> factorsRadical​(GenPolynomial<C> P)
        GenPolynomial factorization ignoring multiplicities.
        Specified by:
        factorsRadical in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - GenPolynomial.
        Returns:
        [p_1, ..., p_k] with P = prod_{i=1,...,k} p_i**{e_i} for some e_i.
      • factorsRadical

        public java.util.List<GenPolynomial<C>> factorsRadical​(java.util.List<GenPolynomial<C>> L)
        GenPolynomial list factorization ignoring multiplicities.
        Parameters:
        L - list of GenPolynomials.
        Returns:
        [p_1, ..., p_k] with p = prod_{i=1,...,k} p_i**{e_i} for some e_i for all p in L.
      • factors

        public java.util.SortedMap<GenPolynomial<C>,​java.lang.Long> factors​(GenPolynomial<C> P)
        GenPolynomial factorization.
        Specified by:
        factors in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - GenPolynomial.
        Returns:
        [p_1 -> e_1, ..., p_k -> e_k] with P = prod_{i=1,...,k} p_i**e_i.
      • primitivePart

        public GenPolynomial<C> primitivePart​(GenPolynomial<C> P)
        GenPolynomial primitive part. Delegates computation to a GreatestCommonDivisor class.
        Parameters:
        P - GenPolynomial.
        Returns:
        primitivePart(P).
      • basePrimitivePart

        public GenPolynomial<C> basePrimitivePart​(GenPolynomial<C> P)
        GenPolynomial base primitive part. Delegates computation to a GreatestCommonDivisor class.
        Parameters:
        P - GenPolynomial.
        Returns:
        basePrimitivePart(P).
      • squarefreeFactors

        public java.util.SortedMap<GenPolynomial<C>,​java.lang.Long> squarefreeFactors​(GenPolynomial<C> P)
        GenPolynomial squarefree factorization. Delegates computation to a GreatestCommonDivisor class.
        Specified by:
        squarefreeFactors in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - GenPolynomial.
        Returns:
        [p_1 -> e_1, ..., p_k -> e_k] with P = prod_{i=1,...,k} p_i**e_i.
      • isFactorization

        public boolean isFactorization​(GenPolynomial<C> P,
                                       java.util.SortedMap<GenPolynomial<C>,​java.lang.Long> F)
        GenPolynomial is factorization.
        Specified by:
        isFactorization in interface Factorization<C extends GcdRingElem<C>>
        Parameters:
        P - GenPolynomial.
        F - = [p_1 -> e_1, ..., p_k -> e_k].
        Returns:
        true if P = prod_{i=1,...,k} p_i**e_i , else false.
      • factorsDegree

        public long factorsDegree​(java.util.SortedMap<GenPolynomial<C>,​java.lang.Long> F)
        Degree of a factorization.
        Parameters:
        F - a factors map [p_1 -> e_1, ..., p_k -> e_k].
        Returns:
        sum_{i=1,...,k} degree(p_i)*e_i.
      • isRecursiveFactorization

        public boolean isRecursiveFactorization​(GenPolynomial<GenPolynomial<C>> P,
                                                java.util.SortedMap<GenPolynomial<GenPolynomial<C>>,​java.lang.Long> F)
        GenPolynomial is factorization.
        Parameters:
        P - GenPolynomial.
        F - = [p_1 -> e_1, ..., p_k -> e_k].
        Returns:
        true if P = prod_{i=1,...,k} p_i**e_i , else false.
      • recursiveFactorsSquarefree

        public java.util.List<GenPolynomial<GenPolynomial<C>>> recursiveFactorsSquarefree​(GenPolynomial<GenPolynomial<C>> P)
        Recursive GenPolynomial factorization of a squarefree polynomial.
        Parameters:
        P - squarefree recursive GenPolynomial.
        Returns:
        [p_1,...,p_k] with P = prod_{i=1, ..., k} p_i.
      • recursiveFactors

        public java.util.SortedMap<GenPolynomial<GenPolynomial<C>>,​java.lang.Long> recursiveFactors​(GenPolynomial<GenPolynomial<C>> P)
        Recursive GenPolynomial factorization.
        Parameters:
        P - recursive GenPolynomial.
        Returns:
        [p_1 -> e_1, ..., p_k -> e_k] with P = prod_{i=1,...,k} p_i**e_i.
      • normalizeFactorization

        public java.util.List<GenPolynomial<C>> normalizeFactorization​(java.util.List<GenPolynomial<C>> F)
        Normalize factorization. p'_i > 0 for i > 1 and p'_1 != 1 if k > 1.
        Parameters:
        F - = [p_1,...,p_k].
        Returns:
        F' = [p'_1,...,p'_k].