Maxima

A Computer Algebra System

Русский Türkçe

1. Introduction and installation of Maxima

What is Maxima?

Maxima is a descendant of DOE Macsyma, which had its origins in the late 1960s at MIT. It is the only system based on that effort still publicly available and with an active user community, thanks to its open source nature. Macsyma was the first of a new breed of computer algebra systems, leading the way for programs such as Maple and Mathematica. This particular variant of Macsyma was maintained by William Schelter from 1982 until he passed away in 2001. In 1998 he obtained permission to release the source code under GPL. It was his efforts and skill which have made the survival of Maxima possible, and we are very grateful to him for volunteering his time and skill to keep the original Macsyma code alive and well. Since his passing a group of users and developers has formed to keep Maxima alive and kicking. Maxima itself is reasonably feature complete at this stage, with abilities such as symbolic integration, 3D plotting, and an ODE solver, but there is a lot of work yet to be done in terms of bug fixing, cleanup, and documentation. This is not to say there will be no new features, but there is much work to be done before that stage will be reached, and for now new features are not likely to be our focus.

What license is Maxima under?

It is licensed under the GNU General Public License (GPL) and hosted at SourceForge.net.

How can I download Maxima?

You can choose among the different downloading options in the Download page, which has the links to the appropriate download page for each case. The code is available as prepackaged binary files for different systems as well as in source code form.

How do I install Maxima?

Follow the instructions in the Download page, according to your system and the method you would like to use.

What are the most important Maxima links that I should know?

2. General

Who is maintaining Maxima now?

Since William Schelter’s passing a group of users and developers has formed to keep Maxima under active development. There are currently 27 developers who can make changes to the source code. To get in touch with them, the preferred channel is the mailing list.

Is Maxima free?

Yes. Maxima is distributed under the GNU General Public License, with some export restrictions from the U. S. Department of Energy.

Can I post a copy of Maxima in my local server for my students/customers to easily download it?

Yes. You can distribute Maxima, provided you keep the copyright notice intact and you also include in your local server a copy of the source code or a link to where that source code can be downloaded.

Who wrote Maxima?

Maxima is a descendant of DOE Macsyma, which had its origins in the late 1960s at MIT. It is the only system based on that effort still publicly available and with an active user community, thanks to its open source nature. Macsyma was the first of a new breed of computer algebra systems, leading the way for programs such as Maple and Mathematica. This particular variant of Macsyma was maintained by William Schelter from 1982 until he passed away in 2001. In 1998 he obtained permission to release the source code under the GPL.

What's the difference among Macsyma, DOE-Macsyma, Symbolics Macsyma and Maxima?

The system developed at MIT was called Macsyma (although the nicknames MACSYM and MAXIMA were sometimes used since filenames were limited to six uppercase-only characters in sixbit character code).

Symbolics licensed Macsyma from M.I.T. and registered "Macsyma" as a trademark at some point (presumably with M. I. T.’s permission).

When Macsyma source ceased to be freely available, pressure was put on M. I. T. (mostly by Richard Fateman) to transfer the code which had been developed largely with Department of Energy (DOE) funding to the DOE, which then released it to others under certain conditions.

That codebase was called DOE Macsyma. It is not clear what legal rights the DOE had to the name Macsyma as opposed to the codebase, but presumably the non-commercial users of DOE Macsyma wanted to avoid any legal wrangling around the name, and started using the name Maxima at some point.

Maxima is simply the most recent name for the branch that started under the name DOE Macsyma.

What is the appropriate way to cite Maxima in an academic context?

We suggest something like:

Maxima.sourceforge.io. Maxima, a Computer Algebra System.
Version 5.47.0 (2023). https://maxima.sourceforge.io/

(or replace the version number and release year, if you are using a different version).

If you use Bibtex for your citations, we recommend that you add the following entry in your bibtex database:

@ELECTRONIC{maxima,
author = {Maxima},
year = {2023},
title = {Maxima, a Computer Algebra System.  Version 5.47.0},
address = {https://maxima.sourceforge.io/},
url = {https://maxima.sourceforge.io/},
owner = {maxima},
timestamp = {2023.06.01}
}

3. Lisp related issues

What Lisp implementations will Maxima work with?

Clisp, SBCL, CCL, GCL (ANSI-enabled only), CMUCL, ECL, Scieneer Common Lisp (SCL), Allegro Common Lisp (ACL) and ABCL. Ports to other ANSI lisps should be straightforward and are welcome; please contact the developers if you are interested in working on a port. See also the Maxima and Lisp page.

4. Installation problems

While installing the Maxima RPM file in Linux, I get an error that "maxima_exec" is a missing dependency; how can I solve that?

You must install at least two rpm packages, maxima and maxima_exec. Go back to the SourceForge file manager and download a maxima-exec package and install that at the same time as the maxima package.

While installing RPM files file from Maxima, I get messages about failed dependencies on stuff other than maxima_exec; what does that mean?

The Maxima RPMs were created on a specific Linux system. Other systems have different versions of various libraries. To install Maxima, the library versions must be the same. You might be able to find rpms for your specific Linux version via the Maxima ports page. You can recompile Maxima on your system. The rpms created that way have the right dependencies for your system.

To recompile Maxima, you need a Lisp implementation. We recommend Clisp. Once you have Clisp installed, download the Maxima src.rpm from the SF file manager. Unpack it and launch rpmbuild to create the rpm files:

$ sudo rpm -ih maxima-5.9.3.src.rpm
$ cd /usr/src/local   # or wherever rpm source code is located
$ sudo rpmbuild -bb SPECS/maxima.spec

Then install the rpm files which were created in /usr/src/local/RPMS.

You almost certainly need superuser privileges to write files to /usr/src/local, hence the use of sudo. Perhaps you can get your friendly system administrator to handle it.

If you create RPMs, we can host them in the Sourceforge file manager; it would be helpful to anyone running the same Linux flavor.

The installation notes in the Download section say a little bit more about rebuilding Maxima. In particular, follow the links to README.lisps and README.rpms.

5. Run-time problems

In Windows, I can launch the Maxima GUI (either Xmaxima or WxMaxima), but then there is a timeout message and I don’t get any response when I enter some expression.

Problem 1. Blocked socket.
Maxima GUI programs talk to the computational engine through a socket. Antivirus and/or firewall programs see that and try to block it (because some malicious programs open sockets too).
Solution: Try to find the control panel for the antivirus and/or firewall. Find the Maxima GUI on the list of blocked programs and disable blocking for it. The GUI program might appear as "Tcl/Tk" (the name of the GUI toolkit for Xmaxima).
Problem 2. Data execution prevention (DEP).
Some Lisp implementations execute code in data areas of memory. Windows DEP sees that and blocks it (because some malicious programs execute code in data areas too).
Solution: Include the full program path of the Maxima executable, for example: C:\Program Files\Maxima-5.10.0\lib\maxima\5.10.0\binary-gcl\maxima.exe in the list of DEP exceptions (Control Panel → System → Advanced → Performance → DEP)

In Linux, I get a message about an invalid entry for localhost in /etc/hosts file.

Make sure there is an entry that matches: 127.0.0.1 localhost, otherwise wxmaxima and/or xmaxima will be unable to resolve "localhost" to a valid IP and then fail with "maxima terminated".

In MacOS, wxmaxima starts but every attempt to execute Maxima commands reports "Not connected to maxima!".

Probably your best bet is to report this problem on the wxMaxima user forum. There are reports that wxMaxima does not work if Maxima is compiled with clisp or sbcl. If you are using one of those Lisp versions, you might want to try compiling Maxima with cmucl.