JAS Packages

## Java Algebra System (JAS) Packages

The JAS software library contains at the moment of the following packages. The relations and dependencies between the packages are shown in figure 1.

edu.jas.structure:
  contains interfaces for the most general algebraic structures like `RingElem` and `RingFactory`.
edu.jas.arith:
  contains classes for arithmetic in the basic coefficient rings like `BigRational`, `BigInteger`, `ModInteger`, `BigDecimal` or `BigComplex`.
edu.jas.poly:
  contains classes for commutative polynomial, solvable polynomial and free non-commutative polynomial arithmetic like `GenPolynomial`, `GenSolvablePolynomial`, `GenWordPolynomial` and others such as `AlgebraicNumber` and a polynomial parser `GenPolynomialTokenizer`.
edu.jas.vector:
  contains classes for vectors and lists of polynomials and solvable polynomials like `GenVector` or `GenMatrix`.
edu.jas.gb:
  contains classes for polynomial and solvable polynomial reduction, Gröbner bases over fields and ideal arithmetic as well as thread parallel and distributed versions of Buchbergers algorithm like `ReductionSeq`, `GroebnerBaseAbstract`, `GroebnerBaseSeq`, `GroebnerBaseParallel` and `GroebnerBaseDistributedHybridEC`. There are also Gröbner bases in polynomial rings over principal ideal domains and Euclidean domains, so called D- and E-Gröbner bases, e.g. `EGroebnerBaseSeq`. New are Gröbner bases in free non-commutative polynomial rings over (skew) fields, see `WordGroebnerBaseSeq`.
edu.jas.gbmod:
  contains classes for module Gröbner bases and syzygies over polynomials and solvable polynomials like `ModGroebnerBase` or `SolvableSyzygy`.
edu.jas.application:
  contains classes with applications of Gröbner bases such as ideal intersections and ideal quotients implemented in `Ideal` or `SolvableIdeal`. Comprehensive Gröbner bases for polynomial rings over parameter rings are contained in class `ComprehensiveGroebnerBaseSeq`. Latest additions are zero and arbitrary dimensional radical-, irreducible-, prime- and primary-decomposition implemented in class `Ideal`.
edu.jas.ufd:
  contains classes for unique factorization domains. Like the interface `GreatestCommonDivisor`, the abstract class `GreatestCommonDivisorAbstract` and various implementations, e.g. polynomial remainder sequences and modular algorithms. The package now contains factorization algorithms for univariate polynomials over several coefficient rings: modulo primes in class `FactorModular`, over integers in class `FactorInteger`, over rational numbers in class `FactorRational` and over algebraic numbers in class `FactorAlgebraic<C>`.
edu.jas.gbufd:
  contains classes for Gröbner base computation using classes from the edu.jas.ufd package for polynomial coefficients. The main classes deal with pseudo reduction `PseudoReduction`, `PseudoReductionSeq` and greatest common divisors computation on coefficients `GroebnerBasePseudoSeq`. Multiplicative sets of polynomials with several simplifications, e.g. maintaining co-prime factors or co-prime and squarefree factors, are contained in classes `MultiplicativeSet`, `MultiplicativeSetCoPrime` or `MultiplicativeSetSquarefree`. Also contained are Gröbner bases for polynomial rings over regular rings (direct products of fields or integral domains) in `RGroebnerBaseSeq` and `RGroebnerBasePseudoSeq`.
edu.jas.root:
  contains classes for real root computations. Like the interface `RealRoots`, the abstract class `RealRootsAbstract` and at the moment of a single implementation based on Sturm sequences `RealRootsSturm`. The package further contains an implementation for real algebraic numbers `RealAlgebraicNumber` with a corresponding factory `RealAlgebraicRing`. For complex root isolation there are `ComplexRoots` interface, `ComplexRootsAbstract` and `ComplexRootsSturm` classes. The implementation provides an exact infallible method which follows the numeric method of Wilf. It uses Sturm sequences following the Routh-Hurwitz Method to count the number of complex roots within a rectangle in the complex plane. There is also an implementation for complex algebraic numbers `ComplexAlgebraicNumber` with a corresponding factory `ComplexAlgebraicRing`.
edu.jas.ufdroot:
  contains classes for factorization in structures used in root computation, for example `FactorRealAlgebraic`.
edu.jas.ps:
  contains univariate and multivariate power series arithmetic in classes `UnivPowerSeries` and `MultiVarPowerSeries`. There is an initial implementation of Mora's tangent cone reduction algorithm in class `ReductionSeq` and a standard bases computation in `StandardBaseSeq` with method `STD()`.
edu.jas.integrate:
  contains methods for the elementary integration of univariate rational functions. The main class is `ElementaryIntegration` with method `integrate()`.
edu.jas.util:
  contains further utilities for parallel and distributed computations like `ThreadPool`, `DistThreadPool` or `DistHashTable`. Part of this package has become obsolete with JDK 1.5.
edu.jas.fd:
  contains classes for solvable polynomials rings as (non-unique) factorization domains. There are methods for polynomial pseudo remainder computation over Ore domains in class `FDUtil`. Further, methods for common divisors are included, but not yet finished.

Figure 1: Package and component structure overview

Last modified: Mon Mar 28 23:49:24 CEST 2016