Git Product home page Git Product logo

awesome-floss-cas's Introduction

Awesome-FLOSS-CAS

A curated list of outstanding Free, Libre, and Open Source Software (FLOSS) Computer Algebra Systems (CAS) for mathematicians, educators, and researchers.

Table of Contents

Introduction

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.

CAS List

Maxima

  • Description: Maxima is a system for manipulating symbolic and numerical expressions, including differentiation, integration, and more.
  • Platform: Cross-platform
  • License: GPL
  • Website: Visit Maxima

Sympy

  • Description: Sympy is a Python library for symbolic mathematics, aiming to become a full-featured CAS.
  • Platform: Cross-platform
  • License: BSD
  • Website: Visit Sympy

SageMath

  • 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

Yacas

  • 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

PanAxiom

  • Description: PanAxiom includes several forks of the Axiom computer algebra system, focusing on different aspects of symbolic computation.
  • Platform: Cross-platform
  • License: BSD, GPL

FORM

  • 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

Macaulay2

  • Description: Macaulay2 is a software system devoted to supporting research in algebraic geometry and commutative algebra.
  • Platform: Cross-platform
  • License: GPL
  • Website: Visit Macaulay2

Magnus

  • 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

Mathomatic

  • Description: Mathomatic is a portable, lightweight computer algebra system capable of symbolic calculation and manipulation.
  • Platform: Cross-platform
  • License: LGPL
  • Website: Visit Mathomatic

REDUCE

  • 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

Euler Math Toolbox (EMT)

  • 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

Mathics

  • 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

Cantor

  • 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

MathAction

  • Description: MathAction provides a web interface to the Axiom/FriCAS computer algebra systems, facilitating collaborative mathematical work.
  • Platform: Web
  • License: BSD
  • Website: Visit MathAction

SymbolicC++

  • 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++

SymEngine

  • 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

GiNaC

  • 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

Piranha

  • 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

Comparison Table

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

How to Contribute

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.

Helps Needed

I am considering adding several features and resources:

  1. 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.
  2. 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.
  3. Integration Guides:

    • Provide documentation on integrating these systems with other software tools, such as data analysis platforms, scientific computing environments, or programming languages.
  4. Community Contributions:

    • Set up a section for user-contributed scripts or modules.
  5. 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.
  6. Video Demonstrations:

    • Add video tutorials or demonstrations that provide visual and practical guidance on using the CAS tools effectively.
  7. Related Resources:

    • Link to external resources, such as forums, blogs, and academic papers that discuss or use the listed CAS.
  8. 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.

License

This curated list is published under the Creative Commons License. Contributions to this repository are accepted under the same license.

awesome-floss-cas's People

Contributors

foadsf avatar

Stargazers

Nosikov Daniil avatar Dr. Charlie Vanaret avatar JairoAdelRio avatar ApproximateTruth avatar Jacob Lerche avatar Betmig avatar Bulhwi Cha avatar Joseph Tingsanchali avatar Fernando Oleo Blanco avatar Tristan F. avatar

Watchers

 avatar ApproximateTruth avatar

awesome-floss-cas's Issues

Enhance Repository Categorization and Clarify CAS Definitions

Issue Description

As the repository grows and includes a broader array of FLOSS Computer Algebra Systems (CAS), valuable feedback suggests the need for better categorization and more precise definitions regarding the nature of the tools listed. This issue addresses these points by categorizing the tools into more specific groups and clarifying which tools are inherently CAS and which are libraries or languages that can perform CAS functions with additional libraries.

Proposed Categories

  1. Domain-Specific CAS Languages:

    • Example: Maxima, REDUCE
    • These are standalone environments explicitly designed for symbolic mathematics.
  2. Languages with CAS Libraries:

    • General-Purpose Languages
      • Example: Python with SymPy
      • These are not CAS by nature but can perform CAS tasks through specific libraries.
    • Domain-Specific Languages for Numerical and Algebraic Calculations:
      • Example: Scilab, Octave, Julia
      • These languages are specifically designed for numerical computations such as linear algebra and can perform CAS tasks through specific libraries.
  3. CAS Libraries:

    • Interpreted Libraries:
      • Example: SymPy (Python)
      • These libraries are used within an interpreted language and do not require compilation, making them accessible for rapid prototyping and use.
    • Compiled Libraries:
      • Example: GiNaC (C++)
      • These require compilation and are typically used to integrate CAS capabilities into applications written in compiled languages.
  4. User Interfaces, Editors, and IDEs for CAS:

    • Example: WxMaxima, Jupyter, Spyder, MathAction
    • These tools provide environments and interfaces that enhance the usability of CAS tools, either as standalone applications or as part of larger systems.

Tools Needing Clarification

Several tools have been mentioned which might require further discussion to determine if they should be included as FLOSS and/or CAS:

  • Scilab
  • Octave
  • SageMath
  • GAP
  • PARI/GP
  • Singular
  • CoCoA

Task List

  • Categorize all listed tools under the proposed categories.
  • Verify the FLOSS status and CAS capabilities of Scilab, Octave, SageMath, GAP, PARI/GP, Singular, and CoCoA.
  • Update the README with these categorizations and clarifications.
  • Solicit community feedback on the proposed changes.

Call for Contributions

I am excited to see contributors help with this task by researching the tools, suggesting categorizations, and updating documentation. This will help make our repository a more structured and informative resource for everyone interested in FLOSS CAS tools.

Thank you for your support and contributions!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.