title: SymbolicC++
text: # 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
  
  The next program illustrates non-commutative symbols in SymbolicC++. Here b is a Bose annihilation operator and bd is a Bose creation operator. The variable vs denotes the vacuum state $|0\rangle$. The ~ operator toggles the commutativity of a variable, i.e. if b is commutative that ~b is non-commutative and if b is non-commutative ~b 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 Sum class. The list of available classes included
  
  * Verylong : An unbounded integer implementation
  * Rational : A template class for rational numbers
  * Quaternion : A template class for quaternions
  * Derive : A template class for automatic differentiation
  * Vector : A template class for vectors (see vector space)
  * Matrix : A template class for matrices (see matrix (mathematics))
  * Sum : A template class for symbolic expressions
  
  Example:
  
  The second version of SymbolicC++ featured new classes such as the Polynomial 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 Symbolic class.
  
  Newer versions are available from the SymbolicC++ website.
  
  