This free software consist of two complementary libraries, the first being fairly generic while the other targets more specific problems. Both are open-source and can be downloaded from the BitBucket repository.


is a template C++ 98 header-only sparse block matrix library. It allows to express in a concise way algebraic operations on sparse matrices whose elements can be a variety of block types, such as Eigen dense or sparse matrices.


is a library that uses and completes bogus to solve systems with second order cone constraints, such as Coulomb friction problems.

Main features




bogus is released under the terms of the Mozilla Public License v2.0.

So-bogus is released under the terms of the GNU General Public License version 2 or, at your option, any later version.

For more information, see LICENCE.md.


bogus includes documentation in the doxygen format, along with usage samples. Run doxygen from the doc/doxygen folder, or browse it online.


Apart from a C++98 compiler, the only requirement is Eigen.

bogus has been successfully tested on a variety of Linux distributions with gcc 4.5+ and clang 3.5+, and on Mac OSX 10.8+ with clang 3.2+. Visual Studio 2012 ( and maybe earlier ) should also be able to compile and run the test suite, though no particular attention is given to this platform.

For more information, see INSTALL.md.


bogus and So-bogus are Copyright 2013 Gilles Daviet gdaviet@gmail.com.

So-bogus implements some algorithms initially developed within the BiPop team at Inria Rhônes-Alpes. Its name is derived from the main use case of the library, a Block-oriented Gauss-Seidel solver for Second Order cone problems.