Introduction to the GiNaC Framework for Symbolic Computation within the C++ Programming Language
Christian Bauer, Alexander Frink, Richard Kreckel
TL;DR
The paper addresses the integration gap between symbolic and numerical computations by introducing GiNaC, a pure C++ framework for symbolic computation. It presents an OO architecture (base class basic, wrapper ex, container classes) that supports expressive expression construction, non-commuting objects, and canonical transformations, aiming to minimize reliance on external CAS languages. The work demonstrates the approach with concrete examples and discusses how GiNaC can streamline loop calculations in quantum field theory and potentially serve as a general-purpose symbolic package. Overall, GiNaC promises tighter integration with C++ workflows and more cohesive development of symbolic-numeric-graphic applications in scientific computing.
Abstract
The traditional split-up into a low level language and a high level language in the design of computer algebra systems may become obsolete with the advent of more versatile computer languages. We describe GiNaC, a special-purpose system that deliberately denies the need for such a distinction. It is entirely written in C++ and the user can interact with it directly in that language. It was designed to provide efficient handling of multivariate polynomials, algebras and special functions that are needed for loop calculations in theoretical quantum field theory. It also bears some potential to become a more general purpose symbolic package.
