/EigenRecursive

Eigen Recursive Matrix Extension

Primary LanguageC++MIT LicenseMIT

Eigen Recursive Matrix Extension (ERME)

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

Usage

    // 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;
    }

Samples and Benchmarks

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):

License

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 darius.rueckert@fau.de