ERME is an extension to the Eigen math library for recursive linear algebra.
Features
- Template specializations to allow the creation and usage of recursive matrix types
- Support for recursive sparse matrices (for example a block-sparse matrix)
- A recursive LDLT decomposition, based on Eigen's simplicial implemenation
- Mixed matrix types and mixed recursive solvers for structured optimization problems
// See samples/helloRecursive for the full example
#include "EigenRecursive/All.h"
int main(int, char**)
{
using namespace Eigen;
using namespace Eigen::Recursive;
using Block = Matrix<double, 2, 2>;
using MatrixOfMatrix = Matrix<MatrixScalar<Block>, 2, 2>;
MatrixOfMatrix A, B, C;
setRandom(A);
setRandom(B);
C = A * B;
std::cout << C << std::endl;
return 0;
}
Compile and run instructions:
mkdir build
cd build
cmake ..
make -j8
./helloRecursion
Sparse Block benchmark:
- Install the MKL library and make sure it is found by cmake.
- Compile in Release mode. (I currently recommend to use the latest Clang compiler)
Bundle Adjustment:
- Install Sophus from source: Link
Other examples (included in the Saiga library):
This project contains (modified) code from the Eigen library. You can find the Eigen license here.
All of our code is under the MIT License. See the LICENSE file for more information.
Copyright (c) 2019 Darius Rückert [email protected]