edu.jas.ufd
Class FactorAbstract<C extends GcdRingElem<C>>

java.lang.Object
  extended by 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 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.

Author:
Heinz Kredel
See Also:
FactorFactory, Serialized Form

Field Summary
protected  GreatestCommonDivisorAbstract<C> engine
          Gcd engine for base coefficients.
protected  SquarefreeAbstract<C> sengine
          Squarefree decompositon engine for base coefficients.
 
Constructor Summary
protected FactorAbstract()
          No argument constructor.
  FactorAbstract(RingFactory<C> cfac)
          Constructor.
 
Method Summary
 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.
 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 exsists.
 boolean isSquarefree(GenPolynomial<C> P)
          GenPolynomial test if is squarefree.
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

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 class java.lang.Object
See Also:
Object.toString()

isIrreducible

public boolean isIrreducible(GenPolynomial<C> P)
GenPolynomial test if is irreducible.

Specified by:
isIrreducible in interface Factorization<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:
isReducible in interface Factorization<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 interface Factorization<C extends GcdRingElem<C>>
Parameters:
P - GenPolynomial.
Returns:
true if P is squarefree, else false.

factorsSquarefree

public java.util.List<GenPolynomial<C>> factorsSquarefree(GenPolynomial<C> P)
GenPolynomial factorization of a squarefree polynomial, using Kronecker substitution.

Specified by:
factorsSquarefree in interface Factorization<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.

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 interface Factorization<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 interface Factorization<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 interface Factorization<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 interface Factorization<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 interface Factorization<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 interface Factorization<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.