Package edu.jas.ufd
Class FactorInteger<MOD extends GcdRingElem<MOD> & Modular>
- java.lang.Object
-
- edu.jas.ufd.FactorAbstract<BigInteger>
-
- edu.jas.ufd.FactorInteger<MOD>
-
- Type Parameters:
MOD
-
- All Implemented Interfaces:
Factorization<BigInteger>
,java.io.Serializable
public class FactorInteger<MOD extends GcdRingElem<MOD> & Modular> extends FactorAbstract<BigInteger>
Integer coefficients factorization algorithms. This class implements factorization methods for polynomials over integers.- Author:
- Heinz Kredel
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected GreatestCommonDivisorAbstract<MOD>
mengine
Gcd engine for modular base coefficients.protected FactorAbstract<MOD>
mfactor
Factorization engine for modular base coefficients.-
Fields inherited from class edu.jas.ufd.FactorAbstract
engine, sengine
-
-
Constructor Summary
Constructors Constructor Description FactorInteger()
No argument constructor.FactorInteger(RingFactory<BigInteger> cfac)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<GenPolynomial<BigInteger>>
baseFactorsSquarefree(GenPolynomial<BigInteger> P)
GenPolynomial base factorization of a squarefree polynomial.static <C extends RingElem<C>>
longdegreeSum(java.util.List<GenPolynomial<C>> L)
Sum of all degrees.java.util.BitSet
factorDegrees(java.util.List<ExpVector> E, int deg)
BitSet for factor degree list.java.util.List<GenPolynomial<BigInteger>>
factorsSquarefree(GenPolynomial<BigInteger> P)
GenPolynomial factorization of a multivariate squarefree polynomial, using Hensel lifting if possible.java.util.List<GenPolynomial<BigInteger>>
factorsSquarefreeHensel(GenPolynomial<BigInteger> P)
GenPolynomial factorization of a multivariate squarefree polynomial, using Hensel lifting.java.util.List<GenPolynomial<BigInteger>>
factorsSquarefreeOptions(GenPolynomial<BigInteger> P, boolean opti, boolean tlex)
GenPolynomial factorization of a multivariate squarefree polynomial, using Hensel lifting if possible.boolean
isIrreducible(GenPolynomial<BigInteger> P)
GenPolynomial test if is irreducible.boolean
isIrreducibleEisenstein(GenPolynomial<BigInteger> P)
GenPolynomial test if is irreducible with Eisenstein criterion.-
Methods inherited from class edu.jas.ufd.FactorAbstract
baseFactors, baseFactorsRadical, basePrimitivePart, factors, factorsDegree, factorsRadical, factorsRadical, factorsSquarefreeKronecker, factorsSquarefreeOptimize, isFactorization, isFactorization, isRecursiveFactorization, isReducible, isSquarefree, normalizeFactorization, primitivePart, recursiveFactors, recursiveFactorsSquarefree, squarefreeFactors, squarefreePart, toString
-
-
-
-
Field Detail
-
mfactor
protected final FactorAbstract<MOD extends GcdRingElem<MOD> & Modular> mfactor
Factorization engine for modular base coefficients.
-
mengine
protected final GreatestCommonDivisorAbstract<MOD extends GcdRingElem<MOD> & Modular> mengine
Gcd engine for modular base coefficients.
-
-
Constructor Detail
-
FactorInteger
public FactorInteger()
No argument constructor.
-
FactorInteger
public FactorInteger(RingFactory<BigInteger> cfac)
Constructor.- Parameters:
cfac
- coefficient ring factory.
-
-
Method Detail
-
isIrreducible
public boolean isIrreducible(GenPolynomial<BigInteger> P)
GenPolynomial test if is irreducible.- Specified by:
isIrreducible
in interfaceFactorization<MOD extends GcdRingElem<MOD> & Modular>
- Overrides:
isIrreducible
in classFactorAbstract<BigInteger>
- Parameters:
P
- GenPolynomial.- Returns:
- true if P is irreducible, else false.
-
isIrreducibleEisenstein
public boolean isIrreducibleEisenstein(GenPolynomial<BigInteger> P)
GenPolynomial test if is irreducible with Eisenstein criterion.- Parameters:
P
- univariate polynomial.- Returns:
- true if P is irreducible, else false if it is unknown.
-
baseFactorsSquarefree
public java.util.List<GenPolynomial<BigInteger>> baseFactorsSquarefree(GenPolynomial<BigInteger> P)
GenPolynomial base factorization of a squarefree polynomial.- Specified by:
baseFactorsSquarefree
in classFactorAbstract<BigInteger>
- Parameters:
P
- squarefree and primitive! GenPolynomial.- Returns:
- [p_1,...,p_k] with P = prod_{i=1, ..., k} p_i.
-
factorDegrees
public java.util.BitSet factorDegrees(java.util.List<ExpVector> E, int deg)
BitSet for factor degree list.- Parameters:
E
- exponent vector list.- Returns:
- {b_0,...,b_k} a BitSet of possible factor degrees.
-
degreeSum
public static <C extends RingElem<C>> long degreeSum(java.util.List<GenPolynomial<C>> L)
Sum of all degrees.- Parameters:
L
- univariate polynomial list.- Returns:
- sum deg(p) for p in L.
-
factorsSquarefree
public java.util.List<GenPolynomial<BigInteger>> factorsSquarefree(GenPolynomial<BigInteger> P)
GenPolynomial factorization of a multivariate squarefree polynomial, using Hensel lifting if possible.- Specified by:
factorsSquarefree
in interfaceFactorization<MOD extends GcdRingElem<MOD> & Modular>
- Overrides:
factorsSquarefree
in classFactorAbstract<BigInteger>
- Parameters:
P
- squarefree and primitive! (respectively monic) multivariate GenPolynomial over the integers.- Returns:
- [p_1,...,p_k] with P = prod_{i=1,...,r} p_i.
-
factorsSquarefreeOptions
public java.util.List<GenPolynomial<BigInteger>> factorsSquarefreeOptions(GenPolynomial<BigInteger> P, boolean opti, boolean tlex)
GenPolynomial factorization of a multivariate squarefree polynomial, using Hensel lifting if possible.- Parameters:
P
- squarefree and primitive! (respectively monic) multivariate GenPolynomial over the integers.opti
- true, if polynomial variables should be optimized, else false.tlex
- true, if INVLEX term order should be forced, else false.- Returns:
- [p_1,...,p_k] with P = prod_{i=1,...,r} p_i.
-
factorsSquarefreeHensel
public java.util.List<GenPolynomial<BigInteger>> factorsSquarefreeHensel(GenPolynomial<BigInteger> P)
GenPolynomial factorization of a multivariate squarefree polynomial, using Hensel lifting.- Parameters:
P
- squarefree and primitive! (respectively monic) multivariate GenPolynomial over the integers.- Returns:
- [p_1,...,p_k] with P = prod_{i=1,...,r} p_i.
-
-