Class FactorAbstract<C extends GcdRingElem<C>>
java.lang.Object
edu.jas.ufd.FactorAbstract<C>
- Type Parameters:
C- coefficient type
- All Implemented Interfaces:
Factorization<C>, Serializable
- Direct Known Subclasses:
FactorAbsolute, FactorInteger, FactorQuotient, FactorRealAlgebraic, FactorRealReal
public abstract class FactorAbstract<C extends GcdRingElem<C>>
extends 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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final booleanprotected final GreatestCommonDivisorAbstract<C> Gcd engine for base coefficients.private static final org.apache.logging.log4j.Loggerprotected final SquarefreeAbstract<C> Squarefree decompositon engine for base coefficients. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedNo argument constructor.FactorAbstract(RingFactory<C> cfac) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionUnivariate GenPolynomial factorization.Univariate GenPolynomial factorization ignoring multiplicities.abstract List<GenPolynomial<C>> Univariate GenPolynomial factorization of a squarefree polynomial.GenPolynomial base primitive part.factors(GenPolynomial<C> P) GenPolynomial factorization.longfactorsDegree(SortedMap<GenPolynomial<C>, Long> F) Degree of a factorization.GenPolynomial factorization ignoring multiplicities.factorsRadical(List<GenPolynomial<C>> L) GenPolynomial list factorization ignoring multiplicities.GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.GenPolynomial factorization of a multivariate squarefree polynomial, using Kronecker substitution and variable order optimization.booleanisFactorization(GenPolynomial<C> P, List<GenPolynomial<C>> F) GenPolynomial is factorization.booleanisFactorization(GenPolynomial<C> P, SortedMap<GenPolynomial<C>, Long> F) GenPolynomial is factorization.booleanGenPolynomial test if is irreducible.booleanisRecursiveFactorization(GenPolynomial<GenPolynomial<C>> P, SortedMap<GenPolynomial<GenPolynomial<C>>, Long> F) GenPolynomial is factorization.booleanGenPolynomial test if a non trivial factorization exists.booleanGenPolynomial test if is squarefree.Normalize factorization.GenPolynomial primitive part.Recursive GenPolynomial factorization.Recursive GenPolynomial factorization of a squarefree polynomial.(package private) static <T> List<T> removeOnce(List<T> a, List<T> b) Remove one occurrence of elements.GenPolynomial squarefree factorization.GenPolynomial greatest squarefree divisor.toString()Get the String representation.
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger -
debug
private static final boolean debug -
engine
Gcd engine for base coefficients. -
sengine
Squarefree decompositon engine for base coefficients.
-
-
Constructor Details
-
FactorAbstract
protected FactorAbstract()No argument constructor. -
FactorAbstract
Constructor.- Parameters:
cfac- coefficient ring factory.
-
-
Method Details
-
toString
-
isIrreducible
GenPolynomial test if is irreducible.- Specified by:
isIrreduciblein interfaceFactorization<C extends GcdRingElem<C>>- Parameters:
P- GenPolynomial.- Returns:
- true if P is irreducible, else false.
-
isReducible
GenPolynomial test if a non trivial factorization exists.- Specified by:
isReduciblein interfaceFactorization<C extends GcdRingElem<C>>- Parameters:
P- GenPolynomial.- Returns:
- true if P is reducible, else false.
-
isSquarefree
GenPolynomial test if is squarefree.- Specified by:
isSquarefreein interfaceFactorization<C extends GcdRingElem<C>>- Parameters:
P- GenPolynomial.- Returns:
- true if P is squarefree, else false.
-
factorsSquarefreeOptimize
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
GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.- Specified by:
factorsSquarefreein interfaceFactorization<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
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
-
baseFactorsRadical
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
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
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
GenPolynomial factorization ignoring multiplicities.- Specified by:
factorsRadicalin interfaceFactorization<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
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
GenPolynomial factorization.- Specified by:
factorsin interfaceFactorization<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.
-
squarefreePart
GenPolynomial greatest squarefree divisor. Delegates computation to a GreatestCommonDivisor class.- Specified by:
squarefreePartin interfaceFactorization<C extends GcdRingElem<C>>- Parameters:
P- GenPolynomial.- Returns:
- squarefree(P).
-
primitivePart
GenPolynomial primitive part. Delegates computation to a GreatestCommonDivisor class.- Parameters:
P- GenPolynomial.- Returns:
- primitivePart(P).
-
basePrimitivePart
GenPolynomial base primitive part. Delegates computation to a GreatestCommonDivisor class.- Parameters:
P- GenPolynomial.- Returns:
- basePrimitivePart(P).
-
squarefreeFactors
GenPolynomial squarefree factorization. Delegates computation to a GreatestCommonDivisor class.- Specified by:
squarefreeFactorsin interfaceFactorization<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
GenPolynomial is factorization.- Specified by:
isFactorizationin interfaceFactorization<C extends GcdRingElem<C>>- Parameters:
P- GenPolynomial.F- = [p_1,...,p_k].- Returns:
- true if P = prod_{i=1,...,r} p_i, else false.
-
isFactorization
GenPolynomial is factorization.- Specified by:
isFactorizationin interfaceFactorization<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
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, SortedMap<GenPolynomial<GenPolynomial<C>>, 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 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 SortedMap<GenPolynomial<GenPolynomial<C>>, 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
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].
-