Package edu.jas.ufd
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 boolean
protected final GreatestCommonDivisorAbstract
<C> Gcd engine for base coefficients.private static final org.apache.logging.log4j.Logger
protected final SquarefreeAbstract
<C> Squarefree decompositon engine for base coefficients. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
No 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.long
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.boolean
isFactorization
(GenPolynomial<C> P, List<GenPolynomial<C>> F) GenPolynomial is factorization.boolean
isFactorization
(GenPolynomial<C> P, SortedMap<GenPolynomial<C>, Long> F) GenPolynomial is factorization.boolean
GenPolynomial test if is irreducible.boolean
isRecursiveFactorization
(GenPolynomial<GenPolynomial<C>> P, SortedMap<GenPolynomial<GenPolynomial<C>>, Long> F) GenPolynomial is factorization.boolean
GenPolynomial test if a non trivial factorization exists.boolean
GenPolynomial 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
Get the String representation. -
isIrreducible
GenPolynomial test if is irreducible.- Specified by:
isIrreducible
in 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:
isReducible
in interfaceFactorization<C extends GcdRingElem<C>>
- Parameters:
P
- GenPolynomial.- Returns:
- true if P is reducible, else false.
-
isSquarefree
GenPolynomial test if is squarefree.- Specified by:
isSquarefree
in 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:
factorsSquarefree
in 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
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
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:
factorsRadical
in 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:
factors
in 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:
squarefreePart
in 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:
squarefreeFactors
in 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:
isFactorization
in 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:
isFactorization
in 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].
-