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. It is distributed under the terms of GNU GPL license.
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 (higher order) derivatives of maps. It is also the core for the ODE 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 in Rn 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")