# Eigen (C++ library)

Jump to navigation
Jump to search

Eigen is a template header-only C++ linear algebra library. It is one of the fastest and most popular.

## Contents

## Usage

### Compilation

Reference

For optimal performance, I recommend using the following flags when compiling.

#### GCC

`-mfma`

Enable fused multiply add`-mavx2`

Enable avx2 vector instructions`-DEIGEN_NO_DEBUG`

Set preprocessor define for eigen optimizations`-fopenmp`

OpenMP parallel execution

## Math

### SVD

Eigen comes with a few SVD implementations in its SVD Module.

If you only need low-rank approximations then you may be interested in randomized SVD.

This can be 10-20x faster when calculating low-rank approximations on large matrices.

Github Implementation

Finding structure with randomness paper

Facebook Blog post