Puneet Varma (Editor)

SymbolicC

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Written in
  
C++

Type
  
Mathematical software

Operating system
  
Cross-platform

License
  
GPL

Developer(s)
  
Yorick Hardy, Willi-Hans Steeb and Tan Kiat Shi

Stable release
  
3.35 / September 15, 2010; 6 years ago (2010-09-15)

SymbolicC++ is a general purpose computer algebra system embedded 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.

Contents

Examples

The following program fragment inverts the matrix ( cos θ sin θ sin θ cos θ ) symbolically.

The output is

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

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 . 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.

    References

    SymbolicC++ Wikipedia