Wednesday, June 10, 2009

Java Algebra System (JAS) Project

The Java Algebra System (JAS) is an object oriented, type safe and multi-threaded approach to computer algebra. JAS provides a well designed software library using generic types for algebraic computations implemented in the Java programming language. The library can be used as any other Java software package or it can be used interactively or interpreted through an jython (Java Python) front end. The focus of JAS is at the moment on commutative and solvable polynomials, Groebner bases and applications. By the use of Java as implementation language JAS is 64-bit and multi-core cpu ready.

The library contains at the moment of the following packages:

contains interfaces for the most general algebraic structures like RingElem and RingFactory.

contains classes for arithmetic in the basic coefficient rings like BigRational, BigInteger or BigComplex.

contains classes for polynomial and solvable polynomial arithmetic like GenPolynomial, GenSolvablePolynomial and others such as AlgebraicNumber and a polynomial parser GenPolynomialTokenizer.

contains classes for vectors and lists of polynomials and solvable polynomials like GenVector or ModuleList.
contains classes for polynomial and solvable polynomial reduction, Groebner bases over fields and ideal arithmetic as well as thread parallel and distributed versions of Buchbergers algorithm like ReductionSeq, GroebnerBaseAbstract, GroebnerBaseSeq, GroebnerBaseParallel and GroebnerBaseDistributed. New are Groebner bases in polynomial rings over principal ideal domains and Euclidean domains, so called D- and E-Groebner bases, e.g. EGroebnerBaseSeq. Latest additions are Groebner bases for polynomial rings over regular rings (direct products of fields or integral domains) in RGroebnerBaseSeq and RGroebnerBasePseudoSeq.

contains classes for module Groebner bases and syzygies over polynomials and solvable polynomials like ModGroebnerBase or SolvableSyzygy.
contains classes with applications of Groebner bases such as ideal intersections and ideal quotients implemented in Ideal or SolvableIdeal. Latest additions are comprehensive Groebner bases for polynomial rings over parameter rings in class ComprehensiveGroebnerBaseSeq.

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.

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.
contains univariate power series arithmetic in class UnivPowerSeries.

contains further utilities for parallel and distributed computations like ThreadPool, DistThreadPool or DistHashTable (part of this package has become obsolete with JDK 1.5).