# Related projects

- MathLibre is a project to archive free mathematical software and free mathematical documents and offer them on Live Linux system. You can experience a wonderful world of opensource mathematical software systems.

## Computer Algebra Systems using Java

- ScAS is a computer algebra system developed in Scala. Scala has some more features than Java to optimally support the implementation of a computer algebra system. The basic structure of ScAS is developed in cooperation with the basic structure of JAS, see the co-authored papers in the Documentation section. ScAS is also a successor of jscl-meditor.

- jscl-meditor Java symbolic computing library and mathematical editor. The goal of this project is to provide a Java symbolic computing library and a mathematical editor acting as a front-end to the former. There are several computer algebra systems available on the market, most of them developed in other languages, mainly C/C++ and Lisp. But the benefits of using Java in symbolic computation are great. Aside from being widely used and to comply with various standards, this language has two features of concern: readability and portability.

- Symja - a symbolic math system written in Java based on the MathEclipse, JAS, Apache Commons Math, Apfloat, Rubi and other libraries. Features: arbitrary precision integers, rationals and complex numbers, polynomials, differentiation, integration, pattern matching and linear algebra. Its symbolic parser can handle Mathematica like expressions. Symja features a web application Symja-Web and an optimized library for Android Symja_Android_Library.

- MathEclipse is a Java Computer Algebra system. MathEclipse has functions for arbitrary-precision integer arithmetic, matrices, vectors, finite sets, derivatives, pattern-matching rewriting rules and functional programming.

- GeoGebra is dynamic mathematics software for all levels of education that joins arithmetic, geometry, algebra and calculus. On the one hand, GeoGebra is an interactive geometry system. You can do constructions with points, vectors, segments, lines, conic sections as well as functions and change them dynamically afterwards. On the other hand, equations and coordinates can be entered directly. Thus, GeoGebra has the ability to deal with variables for numbers, vectors and points, finds derivatives and integrals of functions and offers commands like Root or Extremum. These two views are characteristic of GeoGebra: an expression in the algebra view corresponds to an object in the graphics view and vice versa.

- MathPiper is a new mathematics-oriented programming language which is simple enough to be learned as a first programming language and yet powerful enough to be useful in any science, mathematics, or engineering related career. MathPiper is also a Computer Algebra System (CAS) which is similar in function to the CAS which is included in the TI 89 and TI 92 calculators.

- Jasymca: Programmable Java calculator. CAS (Computer Algebra System), provides exact and symbolic datatypes, interactive graphics display of functions. The user interface can be selected from either a Matlab/Octave/SciLab-style, or a GNU-Maxima-style. Runs on any Java SE- and ME-platform: Windows, MacOS, Linux, Cellphone, PDA and others.

- JGEX: Java Geometry Expert is an ongoing developing system which initially began in early 2004 in Wichita State Univerisity. JGEX is a system which combines our approach for visually dynamic presentation of proofs (VDDP), dynamic geometry software (DGS), automated geometry theorem prover (GTP). The VDDP part is the most distinctive part of JGEX. It is based on our work on DGS and GTP. JGEX can be used to create proofs either manually and automatically. It provides a seris of visual effects for presenting of these proofs. With the applet version of JGEX, the user may create beautiful examples and put them on the web to share with others

- JLinAlg is an open source and easy-to-use Java-library for linear algebra that is licensed under the GNU General Public License (GPL).

- The Apache Commons Mathematics Library is a library of lightweight, self-contained mathematics and statistics components addressing the most common problems not available in the Java programming language or Commons Lang.

- java.symcomp.org Java Library for SCSCP and OpenMath. The libraries `org.symcomp.openmath` and `org.symcomp.scscp` were developed in the SCIEnce Project, an Integrated Infrastructure Initiative, funded by the European Commission under the Research Infrastructures Action of Framework 6. WUPSI is a Universal Popcorn SCSCP Interface - The SCSCP Swiss Army Knife.

- The Orbital Library is a Java class library providing object-oriented representations and algorithms for logic, mathematics, and artificial intelligence. It comprises theorem proving, computer algebra, search and planning, as well as machine learning algorithms.

- Redberry is an open source Java framework providing capabilities for manipulation with tensors. The framework contains wide spectrum of algorithms required by tensor algebra. It is designed to find analytical solutions of complicated mathematical and physical problems.

- Apfloat is a high performance arbitrary precision arithmetic library. You can perform calculations with a precision of millions of digits with it. It's as simple to use as Java's `BigDecimal` or `BigInteger` classes, but performs a lot better with extreme precision numbers (more than a few hundred digits). Also, a full suite of mathematical functions for arbitrary precision numbers are available: all those existing in `java.lang.Math` and more.

- Jscience is a set of Java Tools and Libraries for the Advancement of Sciences. The system is not limited to computer algebra.

## Other Open Source Computer Algebra Systems

- Singular is a Computer Algebra System for polynomial computations with special emphasis on the needs of commutative algebra, algebraic geometry, and singularity theory.

- CoCoA Computations in Commutative Algebra.

- Risa/Asir is an open source general computer algebra system.

- Mathemagix is a free computer algebra and analysis system under development. Standard libraries are available for algebraic computation (large numbers, polynomials, power series, matrices, etc. based on FFT and other fast algorithms) for exact and approximate computation. This should make Mathemagix particularly suitable as a bridge between symbolic computation and numerical analysis. The packages are written in C++. They can both be used from the new compiler mmc, from the old interpreter Mmx-light, or as standalone C++ libraries.

- Pari/GP is a widely used computer algebra system designed for fast computations in number theory (factorizations, algebraic number theory, elliptic curves...), but also contains a large number of other useful functions to compute with mathematical entities such as matrices, polynomials, power series, algebraic numbers, etc., and a lot of transcendental functions.

- Reduce is an interactive system for general algebraic computations of interest to mathematicians, scientists and engineers. It has been produced by a collaborative effort involving many contributors. Its capabilities include: expansion and ordering of polynomials and rational functions; substitutions and pattern matching in a wide variety of forms; automatic and user controlled simplification of expressions; calculations with symbolic matrices; arbitrary precision integer and real arithmetic; facilities for defining new functions and extending program syntax; analytic differentiation and integration; factorization of polynomials; facilities for the solution of a variety of algebraic equations; facilities for the output of expressions in a variety of formats; facilities for generating optimized numerical programs from symbolic input; calculations with a wide variety of special functions; Dirac matrix calculations of interest to high energy physicists.

- FLINT is a C library for doing number theory. FLINT provides types and functions for computing over various base rings. FLINT uses many new algorithms and is sometimes orders of magnitude faster than other available software. FLINT is written in ANSI C and runs on many platforms, but is currently mostly optimised for x86 and x86-64 architectures. It is designed to be threadsafe. FLINT depends on the MPIR (GMP) and MPFR libraries.

- Maxima is a system for the manipulation of symbolic and numerical expressions, including differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields high precision numeric results by using exact fractions, arbitrary precision integers, and variable precision floating point numbers. Maxima can plot functions and data in two and three dimensions.

- Macaulay 2 is a software system devoted to supporting research in algebraic geometry and commutative algebra, whose creation has been funded by the National Science Foundation since 1992. Macaulay2 includes core algorithms for computing Gröbner bases and graded or multi-graded free resolutions of modules over quotient rings of graded or multi-graded polynomial rings with a monomial ordering. The core algorithms are accessible through a versatile high level interpreted user language with a powerful debugger supporting the creation of new classes of mathematical objects and the installation of methods for computing specifically with them. Macaulay2 can compute Betti numbers, Ext, cohomology of coherent sheaves on projective varieties, primary decomposition of ideals, integral closure of rings, and more.

- Axiom is a general purpose Computer Algebra system. It is useful for research and development of mathematical algorithms. It defines a strongly typed, mathematically correct type hierarchy. It has a programming language and a built-in compiler. In 2007, Axiom was forked into two different open source projects: OpenAxiom, and FriCAS.
  FriCAS is an advanced computer algebra system. Its capabilities range from calculus (integration and differentiation) to abstract algebra. It can plot functions and has integrated help system.
  OpenAxiom is an open source platform for symbolic, algebraic, and numerical computations. It offers an interactive environment, an expressive programming language, a compiler, a large set of mathematical libraries of interest to researchers and practitioners of computational sciences.

- The Modula-2 Algebra System (MAS) is an experimental computer algebra system, developed at the University of Passau. MAS combines imperative programming facilities with algebraic specification capabilities for design and study of algebraic algorithms. It contains a large library of implemented Groebner basis algorithms for nearly all algebraic structures where such methods exist. MAS further includes algorithms for real quantifier elimination, parametric real root counting, and for computing in (noncommutative) polynomial rings.
  Starting point for the development of MAS was the requirement for a computer algebra system with an up to date language and design which makes the existing ALDES / SAC-2 algorithm libraries available. At this time there have been about 650 algorithms in ALDES / SAC-2 and additional 450 algorithms related to Gröbner bases developed on top of ALDES / SAC-2. The tension of reusing existing software in an interactive environment with specification capabilities contributes most to the evolution of MAS.
  The resulting view of the software has many similarities with the model theoretic view of algebra. The abstract specification capabilities are realized in a way that an interpretation in an example structure (a model) can be denoted. This means that is is not only possible to compute in term models modulo some congruence relation, but it is moreover possible to exploit an fast interpretation in some optimized (or just existing) piece of software.
  MAS is a predecessor to JAS with respect to the main concepts, however JAS was rewritten from scratch.

- More open source mathematical programs.

- to be continued

## Computer Algebra Systems using other Object Oriented Programing Languages

- Sage is an Open Source Mathematics Software creating a viable free open source alternative to Magma, Maple, Mathematica, and Matlab. Sage is written in Python and Cython as an interface to other open source CAS Singular, PARI/GP, GAP, gnuplot, Magma, and Maple.

- SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.

- GiNaC has been developed to become a replacement engine for xloops which in the past was powered by the Maple CAS. Its design is revolutionary in a sense that contrary to other CAS it does not try to provide extensive algebraic capabilities and a simple programming language but instead accepts a given language (C++) and extends it by a set of algebraic capabilities. The name GiNaC is an iterated and recursive abbreviation for GiNaC is Not a CAS, where CAS stands for Computer Algebra System.

- Cadabra is a computer algebra system (CAS) designed specifically for the solution of problems encountered in field theory. It has extensive functionality for tensor polynomial simplification including multi-term symmetries, fermions and anti-commuting variables, Clifford algebras and Fierz transformations, implicit coordinate dependence, multiple index types and many more. The input format is a subset of TeX. Both a command-line and a graphical interface are available.

Last modified: Wed Mar 31 22:42:35 CEST 2021