# Free and Open Source Math Programs

In this post I’ll go through some of the most prominent math programs available with source code.

This is by no means “original” work, I just collected the headlines and links to various mathematical software projects out there. This started with an offer of my University (Mathematica for 13 Euro), but I don’t want to invest time in a tool I won’t have (free, or almost free) access to for the rest of my life.

The programs differ in their respective foci, the main areas are Computer Algebra System, Numerical Analysis, Statistics and general purpose desktop calculators.

My current choice is *SAGE* and *R* for my math and statistics needs. For simple calculations I usually use the calculator included with the OS or some interactive programming-shell (`ghci`

or `irb`

).

## Hybrid

### SAGE

SAGE is the new star on the open-source math sky. Essentially it is a CAS written in Python, but it provides interfaces to many math programs available. This includes commercial programs like Mathematica and Maple as well as free programs like Maxima, Octave or Singular.

From the homepage:

Each interface requires that the corresponding software is installed on your computer. SAGE includes GAP, PARI, Singular, and Maxima, but does not include Octave (very easy to install), MAGMA (non-free), Maple (non-free), or Mathematica (non-free).

SAGE runs as service on your server or desktop and you use your browser to interact with it (you can also use the command-line interface, though). It is very well documented and gives you access to the source code of the algorithms right within your browser.

Use SAGE for studying a huge range of mathematics, including algebra, calculus, elementary to very advanced number theory, cryptography, numerical computation, commutative algebra, group theory, combinatorics, graph theory, and exact linear algebra.

The goal of the SAGE project, which started 2005, is to provide the best mathematical software in the world.

SAGE is pretty large (on my Mac it uses 722MB right after the installation), but you can find even more (optional packages etc) at their homepage.

It’s also possible to interact with it via Texmacs or Emacs (again, available from their download page).

SAGE is available for Windows, Linux and Mac OS X.

## Computer Algebra System

### Maxima

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 arbitrarily precision floating point numbers. Maxima can plot functions and data in two and three dimensions.

Maxima is very mature and stood the test of time. It started in 1982 and is “free” since 1998.

Maxima is included in SAGE.

### Axiom

Axiom is a general purpose Computer Algebra system. It is useful for doing mathematics by computer and 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.

### Yacas

YACAS is an easy to use, general purpose Computer Algebra System, a program for symbolic manipulation of mathematical expressions. It uses its own programming language designed for symbolic as well as arbitrary-precision numerical computations. The system has a library of scripts that implement many of the symbolic algebra operations; new algorithms can be easily added to the library. YACAS comes with extensive documentation (hundreds of pages) covering the scripting language, the functionality that is already implemented in the system, and the algorithms we used.

- Homepage Downlaods, Screenshots, Tutorial, Manual and Demo are available there.

### PARI/GP

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. PARI is also available as a C library to allow for faster computations.

PARI/GP is included in SAGE.

### Singular

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

Singular is included in SAGE.

### GAP

GAP is a system for computational discrete algebra, with particular emphasis on Computational Group Theory. GAP provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the GAP language as well as large data libraries of algebraic objects.

GAP is included in SAGE.

### Macaulay2

Macaulay 2 is a software system devoted to supporting research in algebraic geometry and commutative algebra.

## Numerical Analysis/Computation

### Octave

GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language.

### Euler

Euler is a powerful interactive numerical laboratory. It quickly evaluates numerical functions, visualizes results, and allows to test and program numerical algorithms. The system can handle real, complex and interval numbers, vectors and matrices, and additionally a long data type for exact computation. Most routines are written in the high level Euler language and can be modified or extended by the user.

### Scilab

Scilab is a scientific software package for numerical computations providing a powerful open computing environment for engineering and scientific applications.

## Statistics

### R

If you want to do some statistics there is no way around “R”. At least not in the free and open-source software world.

R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, …) and graphical techniques, and is highly extensible.

I think R is a tool everyone should be familiar with, at least with the most basic operations. Statistics is such an important every-day tool you can immediately put to work as soon as you know something, anything, about it.

- Homepage
- Documentation
- Tutorial
- Screenshots
- Books (currently 53 books!)

## Command-Line/Desktop Calculator

Sometimes you just want to calculate very simple things, for this task a full fledged system isn’t really appropriate.

### bc

bc is an arbitrary precision numeric processing language. Syntax is similar to C, but differs in many substantial areas. It supports interactive execution of statements. bc is a utility included in the POSIX P1003.2/D11 draft standard.

bc is usually installed on any Linux/Unix system or available via its package management.

### “Other” command-line/desktop calculators

Essentially you can use any interactive shell, like Python’s `python`

or Ruby’s `irb`

as well as Haskell’s `ghci`

or `hugs`

.

### GUI Calculators

Despite the included Desktop Calculators there are some very fine products out there, here some pearls I could find:

- Mac OS X
- Linux
- Windows
- Calcoo for Windows
- Any suggestions?

If nothing else, there is always Google Calc.

Not being able to check the code of a computer-based calculation is like not publishing proofs for a mathematical theorem, it’s ludicrous.

— William Stein, author of SAGE