A curated list of outstanding Free, Libre, and Open Source Software (FLOSS) Computer Algebra Systems (CAS) for mathematicians, educators, and researchers.
This repository gathers and documents the best open-source computer algebra systems available. These tools are invaluable for various mathematical computations, symbolic manipulations, and educational purposes.
- Description: Maxima is a system for manipulating symbolic and numerical expressions, including differentiation, integration, and more.
- Platform: Cross-platform
- License: GPL
- Website: Visit Maxima
- Description: Sympy is a Python library for symbolic mathematics, aiming to become a full-featured CAS.
- Platform: Cross-platform
- License: BSD
- Website: Visit Sympy
- Description: Integrates many existing open-source mathematics software packages (including Symy, Maxima, and GiNaC) into a common interface.
- Platform: Cross-platform
- License: GPL
- Website: Visit SageMath
- Description: Yacas (Yet Another Computer Algebra System) is designed for easy extensibility, featuring a small core and its own programming language.
- Platform: Cross-platform
- License: LGPL
- Website: Visit Yacas
- Description: PanAxiom includes several forks of the Axiom computer algebra system, focusing on different aspects of symbolic computation.
- Axiom: Visit Axiom
- FriCAS: Visit FriCAS
- OpenAxiom: Visit OpenAxiom
- Platform: Cross-platform
- License: BSD, GPL
- Description: FORM is a tool for large-scale algebraic calculations, specialized for computations in high-energy physics.
- Platform: Cross-platform
- License: GPLv3
- Website: Visit FORM
- Description: Macaulay2 is a software system devoted to supporting research in algebraic geometry and commutative algebra.
- Platform: Cross-platform
- License: GPL
- Website: Visit Macaulay2
- Description: Magnus is a computer algebra system that focuses on computations in group theory, particularly for infinite groups.
- Platform: Unix
- License: Custom free software license
- Website: Visit Magnus
- Description: Mathomatic is a portable, lightweight computer algebra system capable of symbolic calculation and manipulation.
- Platform: Cross-platform
- License: LGPL
- Website: Visit Mathomatic
- Description: REDUCE is one of the oldest and most comprehensive general-purpose computer algebra systems used in various scientific fields.
- Platform: Cross-platform
- License: BSD
- Website: Visit REDUCE
- Description: Euler Math Toolbox combines numerical and symbolic tools and is noted for integrating a powerful numerical engine with Maxima for symbolic operations.
- Platform: Windows, Linux
- License: GPL
- Website: Visit EMT
- Description: Mathics is a free, open-source alternative to Mathematica that supports many of its standard library functions.
- Platform: Cross-platform
- License: AGPL
- Website: Visit Mathics
- Description: Cantor integrates different mathematical software into a consistent KDE-integrated interface, providing a user-friendly environment.
- Platform: Cross-platform
- License: GPL
- Website: Visit Cantor
- Description: MathAction provides a web interface to the Axiom/FriCAS computer algebra systems, facilitating collaborative mathematical work.
- Platform: Web
- License: BSD
- Website: Visit MathAction
- Description: SymbolicC++ brings symbolic manipulation capabilities directly into the C++ language, enabling symbolic computations in a standard programming environment.
- Platform: Cross-platform
- License: LGPL
- Website: Visit SymbolicC++
- Description: SymEngine is a fast symbolic manipulation library designed for use in larger systems like Python's SymPy.
- Platform: Cross-platform
- License: BSD
- Website: Visit SymEngine
- Description: GiNaC is an open framework for symbolic computation within the C++ programming language that does not require external libraries.
- Platform: Cross-platform
- License: GPL
- Website: Visit GiNaC
- Description: Piranha is a C++ library for symbolic mathematics, particularly focusing on multivariate polynomials and series manipulations.
- Platform: Cross-platform
- License: MPL
- Website: Visit Piranha
CAS | Programming Language | Typical Applications | Notable Features |
---|---|---|---|
Maxima (WxMaxima, Jupyter) | Lisp | General mathematics, education | Symbolic computation, numerical methods, high precision |
Python-Sympy (Jupyter) | Python | General mathematics, physics, engineering | Integrates with Python, broad library support |
SageMath | Python | Broad spectrum (algebra, calculus, number theory) | Integrates many CAS backends, extensive functionality |
Yacas | Lisp (own language) | Algebraic manipulations, education | Easily extensible, lightweight |
PanAxiom (Axiom, FriCAS, OpenAxiom) | Lisp | Algebra, research, education | Strongly typed, algebraically oriented |
FORM | Own scripting language | High energy physics | Handles very large expressions efficiently |
Macaulay2 | Own language | Algebraic geometry, commutative algebra | Grobner bases, characteristic sets |
Magnus | C++ | Group theory, especially infinite groups | Specialized in computational group theory |
Mathomatic | C | Algebraic equations, education | Lightweight, portable |
REDUCE | Lisp | General mathematics, physics | One of the oldest CAS, versatile |
Euler Math Toolbox (EMT) | C++, own scripting | Numerical analysis, symbolic computations | Numerical and symbolic capabilities |
Mathics | Python | General purpose, similar to Mathematica | Mathematica-compatible syntax, lightweight |
Cantor | C++ (KDE) | Educational, integrates multiple backends | User-friendly, part of KDE education project |
MathAction | Web interface | Web-based access to Axiom/FriCAS | Convenient web interface for Axiom |
SymbolicC++ | C++ | Embedded algebra in C++ applications | Symbolic manipulation in C++ |
SymEngine | C++ | Core for symbolic computations in Sympy | Fast, efficient, used as backend for Sympy |
GiNaC | C++ | Symbolic computations integrated in C++ | No external dependencies, robust |
Piranha | C++ | Polynomial arithmetic, large algebraic expressions | High-performance polynomial operations |
We welcome contributions from the community! Here are some ways you can contribute:
- Add a new CAS: If you know of a FLOSS CAS that is not listed here, please submit a pull request with details following the format used in the CAS List.
- Improve descriptions: Help us improve the descriptions for each listed CAS to provide clearer and more comprehensive information.
- Report Issues: If you notice any errors or outdated information, please open an issue.
I am considering adding several features and resources:
-
Tutorials and Examples:
- Include tutorials or example notebooks demonstrating how to use each CAS for common mathematical problems or specific applications, such as algebra, calculus, or physics.
- Provide step-by-step guides for setting up and getting started with each system.
-
Comparison Tables:
- Offer a more detailed comparison table highlighting each system's strengths and weaknesses, such as performance benchmarks, feature sets, and ease of use.
-
Integration Guides:
- Provide documentation on integrating these systems with other software tools, such as data analysis platforms, scientific computing environments, or programming languages.
-
Community Contributions:
- Set up a section for user-contributed scripts or modules.
-
User Reviews and Experiences:
- Create a space where users can share their experiences, reviews, and tips for using different CAS tools. This could help new users make informed decisions based on community feedback.
-
Video Demonstrations:
- Add video tutorials or demonstrations that provide visual and practical guidance on using the CAS tools effectively.
-
Related Resources:
- Link to external resources, such as forums, blogs, and academic papers that discuss or use the listed CAS.
-
License Information:
- Clearly document the licensing information for each CAS to ensure users understand how they can legally use and distribute the software.
To contribute, please fork the repository, make your changes, and submit a pull request.
This curated list is published under the Creative Commons License. Contributions to this repository are accepted under the same license.