What is the CAPD library?
The CAPD library is a collection of flexible C++ modules which are mainly designed to computation of homology of sets and maps and nonrigorous and validated numerics for dynamical systems.
The list of modules is pretty long, but the most important are:Basic modules:
- krak - a portable graphics kernel for very primitive drawing in the graphical window. Very easy to start with.
- interval - template written interval arithmetic, supports double, long double and multiprecision. It can be extended to any arithmetic type for which we can implement arithmetic operations and rounding.
- vectalg and matrixAlgorithms - a flexible template implementation of basic operations and algorithms for dense vectors and matrices (with integer, floating points and various interval coefficients).
- map - computation of values and derivatives of maps. It is also the core for the solvers in dynsys module.
- dynsys - various nonrigorous and rigorous solvers to ODEs, for computations of the solutions and partial derivatives wrt initial conditions up to arbitrary order.
- geomset, dynset - various representations of sets and Lohner-type algorithms.
- poincare - computation of Poincare maps and their derivatives; both rigorous and nonrigorous.
- diffIncl - rigorous computations of the solutions to differential inclusions.
- Currently developed and recommended homological software is based on various reduction algorithms. The RedHom homology project is the official subproject of the CAPD library.
- homologicalAlgebra - cubical homology algorithms based on the bitmap representation of cubical sets, programmed by Marian Mrozek
- homology - data structures and algorithms for homology computation (as well as some auxiliary code), programmed by Pawel Pilarczyk
- multiEngHom, homengin - a common interface to several cubical homology algorithms (the latter one used in the program "chomp")
The source code of the CAPD library heavily uses advanced template techniques. If you are beginner in the C++ programming, the facade
module is for you. This module might be a bit slower (up to 10%) than the regular classes but it provides non-template interfaces
for most often used classes from the CAPD library.
It can be also recommended for a user who just would like to try the CAPD library.