###### meta data for this page

## In Fortran and C

##### BLAS and LAPACK

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++

##### TooN

http://savannah.nongnu.org/projects/toon

http://mi.eng.cam.ac.uk/~er258/cvd/toon.html

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.

##### CPPLAPACK

http://cpplapack.sourceforge.net/

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.

##### TVMET

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.

##### uBLAS

http://www.boost.org/libs/numeric/ublas/doc/index.htm

uBLAS is part of the huge library Boost.

##### Blitz++

http://www.oonumerics.org/blitz/

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

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.