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
import "symbolicc++.h";
import std;
using namespace std;
int main
The following program fragment inverts the matrix
symbolically.
Symbolic theta;
Symbolic r = ;
std::println; // sin
Symbolic rInv = r.inverse;
std::println;
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. 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.import "symbolicc++.h";
import std;
int main
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 theSum class. The list of available classes includedVerylong: An unbounded integer implementation Rational: A template class for rational numbersQuaternion: A template class for quaternionsDerive: A template class for automatic differentiationVector: A template class for vectors Matrix: A template class for matrices Sum: A template class for symbolic expressionsExample:
import "rational.h";
import "msymbol.h";
import std;
int main
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++ .