Search code examples
c++linear-algebramultiplatform

Best free Cross-Platform Library for higher level Matrix, Vector and esp. SparseMatrix operations?


Our Platforms:

  • Windows, Linux, Mac OSX.

Free:

  • LGPL compatible

Support high-level operations:

  • Eigensystems, SVD, QR, LU, inverse, pseudo inverse (aka Moore-Penrose inverse),...

Support many matrix types and also good performing small matrices e.g. 3x3:

  • Sparse, Symmetric,... (and also operations on them!, e.g. pseudoInverse() )

And of course it should be

  • efficent
  • active development in the last months

It would be nice to link again LAPACK, MKL, ATLAS, etc..

The thing what comes really close is Armadillo which does not support sparse containers. Eigen3 is also great but does not provide pseudo inverse or support sparse matrices (just for saving place).

I also looked on:

  • newmat11, boost::uBlas, gsl, IT++

Solution

  • eigen is the best one! It's much better than boost::ublas, you can write C = A*B instead of C = prod(A,B) as in ublas and I have tested the speed it's much faster than ublas.