SymbolicC++

SymbolicC++ is a general purpose computer algebra system written in the programming language C++. It is free software released under the terms of the GNU General Public License. SymbolicC++ is used by including a C++ header file or by linking against a library.

Examples
The following program fragment inverts the matrix $$ \begin{pmatrix} \cos\theta & \sin\theta\\ -\sin\theta & \cos\theta \end{pmatrix} $$ symbolically.

The output is

[ cos(theta) −sin(theta) ] [ sin(theta) cos(theta) ]

The next program illustrates non-commutative symbols in SymbolicC++. Here  is a Bose annihilation operator and   is a Bose creation operator. The variable  denotes the vacuum state $$|0\rangle$$. The  operator toggles the commutativity of a variable, i.e. if   is commutative that   is non-commutative and if   is non-commutative   is commutative.

Further examples can be found in the books listed below.

History
SymbolicC++ is described in a series of books on computer algebra. The first book described the first version of SymbolicC++. In this version the main data type for symbolic computation was the  class. The list of available classes included


 * : An unbounded integer implementation
 * : A template class for rational numbers
 * : A template class for quaternions
 * : A template class for automatic differentiation
 * : A template class for vectors (see vector space)
 * : A template class for matrices (see matrix (mathematics))
 * : A template class for symbolic expressions

Example:

The second version of SymbolicC++ featured new classes such as the  class and initial support for simple integration. Support for the algebraic computation of Clifford algebras was described in using SymbolicC++ in 2002. Subsequently, support for Gröbner bases was added. The third version features a complete rewrite of SymbolicC++ and was released in 2008. This version encapsulates all symbolic expressions in the  class.

Newer versions are available from the SymbolicC++ website.