arbitrary precision (bignum) arithmetic, allowing for instance to evaluate pi to 10,000 digits.
symbolic manipulation engine, to simplify algebraic expressions, differentiate and integrate functions and solve equations
graphing facility, to produce graphs of functions, typically in two and three dimensions
linear algebra subsystem, to allow matrix computations and solving of systems of linear equations
high level programming language, allowing users to implement their own algorithms
typesetting system for mathematical expressions (see "pretty print")
The study of algorithms useful for computer algebra systems is known as computer algebra.
The run-time of numerical programs implemented in computer algebra systems is normally longer than that of equivalent programs implemented in systems such as MATLAB, GNU Octave or directly in C, because the computer algebra languages are often interpreted and the bignum system may cause overhead. (Note that MATLAB and Octave are interpreted also.)
Computer algebra systems began to appear in the early 1970s, and evolved out of research into artificial intelligence (the fields are now regarded as largely separate). The first popular systems were Reduce, Derive and Macsyma which are still commercially available; a copyleft version of Macsyma called GNU Maxima is actively being maintained. The current market leaders are Maple and Mathematica; both are commonly used by research mathematicians, scientists, and engineers. MuPAD is a commercial system which provides a free version (with slightly restricted user interface) for non-commercial research and educational usage. Some computer algebra systems focus on a specific area of application; these are typically developed in academia and free.
The run-time of numerical programs implemented in computeralgebra systems is normally longer than that of equivalent programs implemented in systems such as MATLAB, GNU Octave, or directly in C, since they are programmed for full symbolic generality and thus cannot use machine numerical operations directly for most of their functions.
Computeralgebra systems began to appear in the early 1970s, and evolved out of research into artificial intelligence, though the fields are now regarded as largely separate.
Some computeralgebra systems focus on a specific area of application; these are typically developed in academia and free.