my-server
← Wiki

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

symbolically.

The output is

<pre> [ cos(theta) −sin(theta) ] [ sin(theta) cos(theta) ] </pre>

The next program illustrates non-commutative symbols in SymbolicC++. Here <code>b</code> is a Bose annihilation operator and <code>bd</code> is a Bose creation operator. The variable <code>vs</code> denotes the vacuum state . The <code>~</code> operator toggles the commutativity of a variable, i.e. if <code>b</code> is commutative that <code>~b</code> is non-commutative and if <code>b</code> is non-commutative <code>~b</code> 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 <code>Sum</code> class. The list of available classes included

  • <code>Verylong</code>: An unbounded integer implementation (like <code>BigInteger</code>)
  • <code>Rational</code>: A template class for rational numbers
  • <code>Quaternion</code>: A template class for quaternions
  • <code>Derive</code>: A template class for automatic differentiation
  • <code>Vector</code>: A template class for vectors (see vector space)
  • <code>Matrix</code>: A template class for matrices (see matrix (mathematics))
  • <code>Sum</code>: A template class for symbolic expressions

Example:

The second version of SymbolicC++ featured new classes such as the <code>Polynomial</code> 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 <code>Symbolic</code> class.

Newer versions are available from the SymbolicC++ website.

See also

References

External links