This package contains classes for polynomials rings as unique factorization domains.
Provided methods with interface GreatestCommonDivisor
are e.g. greatest common divisors gcd()
, primitive part primitivePart()
or coPrime()
.
The different classes implement variants of polynomial remainder sequences (PRS)
and modular methods.
Interface Squarefree
provides the greatest squarefree factor
squarefreeFactor()
and a complete squarefree decompostion can be obtained
with method squarefreeFactors()
.
There is a Factorization
interface with an
FactorAbstract
class with common codes.
Factorization of univariate polynomials exists for several coefficient rings:
modulo primes in class FactorModular
,
over integers in class FactorInteger
,
over rational numbers in class FactorRational
,
over algebraic numbers in class FactorAlgebraic<C>
and
over rational functions in class FactorQuotient<C>
(where for the last two classes C
can be any other ring for which the
FactorFactory. getImplementation
returns an implementation).
Multivatiate polynomials are reduced to the univariate polynomials via Kronecker substitution
and are therefore not very efficient at the moment.
The factorization of polynomials is partly experimental.
The rational function class Quotient
computes quotients of polynomials reduced
to lowest terms.
To choose the correct implementation always use the factory classes
GCDFactory
, SquarefreeFactory
and FactorFactory
with methods getImplementation()
or getProxy()
.
These methods will take care of all possible (implemented) coefficient rings properties.
The polynomial coefficients must implement the GcdRingElem
interface and
so must allow greatest common divisor computations.
Greatest common divisor computation is completely generic and works for any
implemented integral domain.
If special, optimized implementations exist they will be used.
Squarefree decomposition is also completely generic and works for any
implemented integral domain. There are no special, optimized implementations.
Factorization is generic relative to the implemented ring constructions: algebraic field extensions
and transcendent field extensions. Implemented base cases are modular coefficient, integer coefficients
and rational number coefficients.
The implementation follows Geddes & Czapor & Labahn Algorithms for Computer Algebra and Cohen A Curse in Computational Algebraic Number Theory. See also Kaltofen Factorization of Polynomials in Computing Supplement, Springer, 1982, Davenport & Gianni & Trager Scratchpad's View of Algebra II: A Categorical View of Factorization in ISSAC'91 and the ALDES/SAC2 code as contained in MAS.
Last modified: Sat Oct 23 18:55:42 CEST 2010
$Id: package.html 3357 2010-10-23 17:10:02Z kredel $