C/C++ Library Interfaces¶
An underlying philosophy in the development of Sage is that it should provide unified library-level access to the some of the best GPL’d C/C++ libraries. Currently Sage provides some access to MWRANK, NTL, PARI, and Hanke, each of which are included with Sage.
The interfaces are implemented via shared libraries and data is
moved between systems purely in memory. In particular, there is no
interprocess interpreter parsing (e.g., expect
),
since everything is linked together and run as a single process.
This is much more robust and efficient than using
expect
.
Each of these interfaces is used by other parts of Sage. For example, mwrank is used by the elliptic curves module to compute ranks of elliptic curves, and PARI is used for computation of class groups. It is thus probably not necessary for a casual user of Sage to be aware of the modules described in this chapter.
- Sage interface to Cremona’s
eclib
library (also known asmwrank
) - Cython interface to Cremona’s
eclib
library (also known asmwrank
) - Cremona matrices
- Modular symbols using eclib newforms
- Cremona modular symbols
- Cremona modular symbols
- Rational reconstruction
- Rubinstein’s lcalc library
- Hyperelliptic Curve Point Finding, via ratpoints.
- libSingular: Functions
- libSingular: Function Factory
- libSingular: Conversion Routines and Initialisation
- Wrapper for Singular’s Polynomial Arithmetic
- libSingular: Options
- Wrapper for Singular’s Rings
- Singular’s Groebner Strategy Objects
- Cython wrapper for the Parma Polyhedra Library (PPL)
- Linbox interface
- Flint imports
- FLINT fmpz_poly class wrapper
- FLINT Arithmetic Functions
- Symmetrica library
- Utilities for Sage-mpmath interaction
- Victor Shoup’s NTL C++ Library
- The Elliptic Curve Method for Integer Factorization (ECM)
- An interface to Anders Buch’s Littlewood-Richardson Calculator
lrcalc
- Sage class for PARI’s GEN type
- PARI C-library interface
- Convert Python functions to PARI closures
- Convert PARI objects to/from Python integers
- Functions for handling PARI errors
- Ring of pari objects
- Readline
- Context Managers for LibGAP
- Gap functions
- Long tests for libGAP
- Utility functions for libGAP
- libGAP shared library Interface to GAP
- Short tests for libGAP
- libGAP element wrapper
- LibGAP Workspace Support
- Library interface to Embeddable Common Lisp (ECL)
- GSL arrays
- Interface to the
pselect()
system call