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 theFactorization
interface, except the method for factorization of a squarefree polynomial. The methods to obtain squarefree polynomials delegate the computation to theGreatestCommonDivisor
classes and are included for convenience.- Author:
- Heinz Kredel
- See Also:
FactorFactory
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected GreatestCommonDivisorAbstract<C>
engine
Gcd engine for base coefficients.protected SquarefreeAbstract<C>
sengine
Squarefree decompositon engine for base coefficients.
-
Constructor Summary
Constructors Modifier Constructor Description protected
FactorAbstract()
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.long
factorsDegree(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.boolean
isFactorization(GenPolynomial<C> P, java.util.List<GenPolynomial<C>> F)
GenPolynomial is factorization.boolean
isFactorization(GenPolynomial<C> P, java.util.SortedMap<GenPolynomial<C>,java.lang.Long> F)
GenPolynomial is factorization.boolean
isIrreducible(GenPolynomial<C> P)
GenPolynomial test if is irreducible.boolean
isRecursiveFactorization(GenPolynomial<GenPolynomial<C>> P, java.util.SortedMap<GenPolynomial<GenPolynomial<C>>,java.lang.Long> F)
GenPolynomial is factorization.boolean
isReducible(GenPolynomial<C> P)
GenPolynomial test if a non trivial factorization exists.boolean
isSquarefree(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.String
toString()
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:
toString
in classjava.lang.Object
- See Also:
Object.toString()
-
isIrreducible
public boolean isIrreducible(GenPolynomial<C> P)
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
public boolean isReducible(GenPolynomial<C> P)
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
public boolean isSquarefree(GenPolynomial<C> P)
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
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 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:
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
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 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:
squarefreePart
in 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:
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
public boolean isFactorization(GenPolynomial<C> P, java.util.List<GenPolynomial<C>> F)
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
public boolean isFactorization(GenPolynomial<C> P, java.util.SortedMap<GenPolynomial<C>,java.lang.Long> F)
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
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].
-
-