SageMath

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

SageMath
Initial release24 February 2005; 21 years ago (2005-02-24)
Stable release9.5 (30 January 2022; 4 years ago (2022-01-30)) [±][1]
Preview release
10.8.beta9 / 11 November 2025; 5 months ago (2025-11-11)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inPython, Cython
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemLinux, macOS, Microsoft Windows, Solaris, Android, iOS
    Platform
    SizeApprox. 112–3319 MB
    TypeComputer algebra system
    LicenseGPLv3[2]
    Websitewww.sagemath.org

    SageMath (previously Sage or SAGE, "System for Algebra and Geometry Experimentation"[3]) is a computer algebra system (CAS) with features covering many aspects of mathematics, including algebra, combinatorics, graph theory, group theory, differentiable manifolds, numerical analysis, number theory, calculus, and statistics.

    The first version of SageMath was released on 24 February 2005 as free and open-source software under the terms of the GNU General Public License version 2, with the initial goals of creating an "open source alternative to Magma, Maple, Mathematica, and MATLAB".[4] The originator and leader of the SageMath project, William Stein, was a mathematician at the University of Washington.

    SageMath uses a syntax resembling Python's,[5] supporting procedural, functional, and object-oriented constructs.

    Development

    [edit | edit source]
    File:William A. Stein.png
    William A. Stein, originator and leader of the SageMath project

    Stein realized when designing Sage that there were many open-source mathematics software packages already written in different languages, namely C, C++, Common Lisp, Fortran and Python.

    Rather than reinventing the wheel, Sage (which is written mostly in Python and Cython) integrates many specialized CAS software packages into a common interface, for which a user needs to know only Python. However, Sage contains hundreds of thousands of unique lines of code adding new functions and creating the interfaces among its components.[6]

    SageMath uses both students and professionals for development. The development of SageMath is supported by both volunteer work and grants.[7] However, it was not until 2016 that the first full-time Sage developer was hired (funded by an EU grant).[8] The same year, Stein described his disappointment with a lack of academic funding and credentials for software development, citing it as the reason for his decision to leave his tenured academic position to work full-time on the project in a newly founded company, SageMath Inc.[8]

    Achievements

    [edit | edit source]

    Licensing and availability

    [edit | edit source]

    SageMath is free software, distributed under the terms of the GNU General Public License version 3.[2]

    Windows

    SageMath 10.0 (May 2023) requires Windows Subsystem for Linux in version 2,[12] which in turn requires Windows to run as a Hyper-V client. SageMath 8.0 (July 2017), with development funded by the OpenDreamKit project,[8] successfully built on Cygwin, and a binary installer for 64-bit versions of Windows was available.[13] Although Microsoft was sponsoring a Windows version of SageMath, prior to 2016 users of Windows had to use virtualization technology such as VirtualBox to run SageMath.[14]

    Linux

    SageMath is available as a package in some Linux distributions, including Arch Linux, Debian, Guix,[15] Ubuntu and NixOS. In Gentoo, it is available via layman in the "sage-on-gentoo"[16] overlay. The packages used by NixOS and Gnu Guix are available for use on other distributions, due to the distribution-agnostic nature of their package managers.

    Other operating systems

    Gentoo prefix also provides Sage on other operating systems.

    Software packages contained in SageMath

    [edit | edit source]

    The philosophy of SageMath is to use existing open-source libraries wherever they exist. Therefore, it uses many libraries from other projects.

    Mathematics packages
    contained in SageMath[17]
    Algebra GAP, Singular, FLINT
    Algebraic geometry Singular
    Arbitrary-precision arithmetic GMP, MPFR, MPFI, NTL, mpmath, Arb
    Arithmetic geometry PARI/GP, NTL, mwrank, ECM
    Calculus Maxima, SymPy, GiNaC, Giac, FriCAS
    Combinatorics Symmetrica, Sage-Combinat
    Linear algebra ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL
    Graph theory NetworkX
    Group theory GAP
    Numerical computation GSL, SciPy, NumPy, ATLAS
    Number theory PARI/GP, FLINT, NTL
    Statistical computing R, SciPy
    Other packages
    contained in SageMath
    Command-line shell IPython
    Database ZODB, SQLite
    Graphical interface SageMath Notebook, MathJax[18] (formerly jsMath)
    Graphics matplotlib, Tachyon, GD, Jmol
    Interactive programming language Python
    Networking Twisted
    Other Mathematics package
    available for SageMath
    Differential geometry and tensor calculus Sage Manifolds

    See also

    [edit | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ a b c William Stein: The origins of SageMath – creating a viable open source alternative to Magma, Maple, Mathematica, and Matlab (presentation, 11 June 2016)
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]