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>,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 theFactorizationinterface, except the method for factorization of a squarefree polynomial. The methods to obtain squarefree polynomials delegate the computation to theGreatestCommonDivisorclasses and are included for convenience.- Author:
- Heinz Kredel
- See Also:
FactorFactory, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected GreatestCommonDivisorAbstract<C>engineGcd engine for base coefficients.protected SquarefreeAbstract<C>sengineSquarefree decompositon engine for base coefficients.
-
Constructor Summary
Constructors Modifier Constructor Description protectedFactorAbstract()No argument constructor.FactorAbstract(RingFactory<C> cfac)Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.util.SortedMap<GenPolynomial<C>,java.lang.Long>baseFactors(GenPolynomial<C> P)Univariate GenPolynomial factorization.java.util.List<GenPolynomial<C>>baseFactorsRadical(GenPolynomial<C> P)Univariate GenPolynomial factorization ignoring multiplicities.abstract java.util.List<GenPolynomial<C>>baseFactorsSquarefree(GenPolynomial<C> P)Univariate GenPolynomial factorization of a squarefree polynomial.GenPolynomial<C>basePrimitivePart(GenPolynomial<C> P)GenPolynomial base primitive part.java.util.SortedMap<GenPolynomial<C>,java.lang.Long>factors(GenPolynomial<C> P)GenPolynomial factorization.longfactorsDegree(java.util.SortedMap<GenPolynomial<C>,java.lang.Long> F)Degree of a factorization.java.util.List<GenPolynomial<C>>factorsRadical(GenPolynomial<C> P)GenPolynomial factorization ignoring multiplicities.java.util.List<GenPolynomial<C>>factorsRadical(java.util.List<GenPolynomial<C>> L)GenPolynomial list factorization ignoring multiplicities.java.util.List<GenPolynomial<C>>factorsSquarefree(GenPolynomial<C> P)GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.java.util.List<GenPolynomial<C>>factorsSquarefreeKronecker(GenPolynomial<C> P)GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.java.util.List<GenPolynomial<C>>factorsSquarefreeOptimize(GenPolynomial<C> P)GenPolynomial factorization of a multivariate squarefree polynomial, using Kronecker substitution and variable order optimization.booleanisFactorization(GenPolynomial<C> P, java.util.List<GenPolynomial<C>> F)GenPolynomial is factorization.booleanisFactorization(GenPolynomial<C> P, java.util.SortedMap<GenPolynomial<C>,java.lang.Long> F)GenPolynomial is factorization.booleanisIrreducible(GenPolynomial<C> P)GenPolynomial test if is irreducible.booleanisRecursiveFactorization(GenPolynomial<GenPolynomial<C>> P, java.util.SortedMap<GenPolynomial<GenPolynomial<C>>,java.lang.Long> F)GenPolynomial is factorization.booleanisReducible(GenPolynomial<C> P)GenPolynomial test if a non trivial factorization exsists.booleanisSquarefree(GenPolynomial<C> P)GenPolynomial test if is squarefree.java.util.List<GenPolynomial<C>>normalizeFactorization(java.util.List<GenPolynomial<C>> F)Normalize factorization. p'_i > 0 for i > 1 and p'_1 !GenPolynomial<C>primitivePart(GenPolynomial<C> P)GenPolynomial primitive part.java.util.SortedMap<GenPolynomial<GenPolynomial<C>>,java.lang.Long>recursiveFactors(GenPolynomial<GenPolynomial<C>> P)Recursive GenPolynomial factorization.java.util.List<GenPolynomial<GenPolynomial<C>>>recursiveFactorsSquarefree(GenPolynomial<GenPolynomial<C>> P)Recursive GenPolynomial factorization of a squarefree polynomial.java.util.SortedMap<GenPolynomial<C>,java.lang.Long>squarefreeFactors(GenPolynomial<C> P)GenPolynomial squarefree factorization.GenPolynomial<C>squarefreePart(GenPolynomial<C> P)GenPolynomial greatest squarefree divisor.java.lang.StringtoString()Get the String representation.
-
-
-
Field Detail
-
engine
protected final GreatestCommonDivisorAbstract<C extends GcdRingElem<C>> engine
Gcd engine for base coefficients.
-
sengine
protected final SquarefreeAbstract<C extends GcdRingElem<C>> sengine
Squarefree decompositon engine for base coefficients.
-
-
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:
toStringin classjava.lang.Object- See Also:
Object.toString()
-
isIrreducible
public boolean isIrreducible(GenPolynomial<C> P)
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
public boolean isReducible(GenPolynomial<C> P)
GenPolynomial test if a non trivial factorization exsists.- Specified by:
isReduciblein interfaceFactorization<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:
isSquarefreein interfaceFactorization<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:
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
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.
-
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:
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
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:
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
public GenPolynomial<C> squarefreePart(GenPolynomial<C> P)
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
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:
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
public boolean isFactorization(GenPolynomial<C> P, java.util.List<GenPolynomial<C>> F)
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
public boolean isFactorization(GenPolynomial<C> P, java.util.SortedMap<GenPolynomial<C>,java.lang.Long> F)
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
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].
-
-