### Navigation

- index
- modules |
- next |
Sage Reference Manual »
- Interpreter Interfaces »

# Interpreter Interfaces

Sage provides a unified interface to the best computational software. This is accomplished using both C-libraries (see C/C++ Library Interfaces) and interpreter interfaces, which are implemented using pseudo-tty’s, system files, etc. This chapter is about these interpreter interfaces.

Note

Each interface requires that the corresponding software is installed on your computer. Sage includes GAP, PARI, Singular, and Maxima, but does not include Octave (very easy to install), MAGMA (non-free), Maple (non-free), or Mathematica (non-free).

There is overhead associated with each call to one of these systems. For example, computing `2+2` thousands of times using the GAP interface will be slower than doing it directly in Sage. In contrast, the C-library interfaces of C/C++ Library Interfaces incur less overhead.

In addition to the commands described for each of the interfaces below, you can also type e.g., `%gap`, `%magma`, etc., to directly interact with a given interface in its state. Alternatively, if `X` is an interface object, typing `X.interact()` allows you to interact with it. This is completely different than `X.console()` which starts a complete new copy of whatever program `X` interacts with. Note that the input for `X.interact()` is handled by Sage, so the history buffer is the same as for Sage, tab completion is as for Sage (unfortunately!), and input that spans multiple lines must be indicated using a backslash at the end of each line. You can pull data into an interactive session with `X` using `sage(expression)`.

The console and interact methods of an interface do very different things. For example, using gap as an example:

1. `gap.console()`: You are completely using another program, e.g., gap/magma/gp Here Sage is serving as nothing more than a convenient program launcher, similar to bash.
2. `gap.interact()`: This is a convenient way to interact with a running gap instance that may be “full of” Sage objects. You can import Sage objects into this gap (even from the interactive interface), etc.

The console function is very useful on occasion, since you get the exact actual program available (especially useful for tab completion and testing to make sure nothing funny is going on).

- Common Interface Functionality through Pexpect
- Interface to Axiom
- The Elliptic Curve Factorization Method
- Interface to 4ti2 (http://www.4ti2.de)
- Interface to GAP
  - First Examples
  - GAP and Singular
  - Saving and loading objects
  - Long Input
  - Changing which GAP is used
- Interface to GAP3
  - Obtaining GAP3
  - Changing which GAP3 is used
  - Functionality and Examples
  - Common Pitfalls
  - Examples
- Interface to the GP calculator of PARI/GP
- Interface to the Gnuplot interpreter
- Interface to KASH
  - Issues
  - Tutorial
  - Long Input
- Interface to Magma
  - Parameters
  - Multiple Return Values
  - Long Input
  - Garbage Collection
  - Other Examples
- Interface to Maple
  - Tutorial
- Interface to MATLAB
  - Tutorial
- Pexpect interface to Maxima
  - Tutorial
  - Examples involving matrices
  - Laplace Transforms
  - Continued Fractions
  - Special examples
  - Miscellaneous
  - Interactivity
  - Latex Output
  - Long Input
- Library interface to Maxima
- Interface to Mathematica
  - Tutorial
  - Long Input
  - Loading and saving
  - Complicated translations
- Interface to mwrank
- Interface to GNU Octave
  - Computation of Special Functions
  - Tutorial
- Interface to QEPCAD
- Interface to R
- Interface to Sage
- Interface to Singular
  - Introduction
  - Tutorial
  - Computing the Genus
  - An Important Concept
  - Long Input
- The Tachyon Ray Tracer
- Interface for extracting data and generating images from Jmol readable files.

# Indices and Tables

- Index
- Module Index
- Search Page

### Navigation

- index
- modules |
- next |
Sage Reference Manual »
- Interpreter Interfaces »