meta data for this page

Back to the #itlab main page

In Fortran and C


These are the de facto standard fast linear algebra libraries. Bindings to C and other languages are available. ATLAS might be a good implementation of BLAS and LAPACK, it should give you a machine-optimized library.

In C++


Tom's Object-oriented numerics library. Very templated, offers fast, highly optimizable fixed size matrix algebra and supports also dynamically sized matrices. Itlabcpp depends on this. Requires LAPACK.


LAPACK bindings for C++, seems quite nice library. Not really suitable for small fixed size matrix operations though. The library consists only of headers, no actual lib-files provided, but you must have BLAS and LAPACK installed and link your program to them.


Tiny Vector Matrix library using Expression Templates. The idea is to unroll all matrix operations compile-time for small fixed-size matrices. Note: when running configure, --enable-optimizations can add compiler flags independent of your architecture, e.g. -msse2. The library consists only of headers, no actual lib-files provided. The library depends heavily on a compiler with templated code and for optimizations. GCC 3.3 seems to work well enough. This is the only library providing fixed-size unrolled matrix operations.


Does contain TinyVector in the same sense as TVMET, but the corresponding matrix implementation for fixed-size matrices is lacking bad.

CVM Class Library

Builds on BLAS and LAPACK, supports more than one operating environment. No experience about how good this is or is the interface nice. If you take a closer look at it, add your comments here. The latest version wants GCC 4.1. Supports AMD Core Math Library and Intel Math Kernel Library. Existed since 1992, has a 670-page manual.


VXL is a set of vision libraries, and includes vnl, a numerics library including matrix manipulation. Misses LU-decomposition. API looks nice, includes fixed size matrices and vectors. Might be possible to take vnl without the other library components.