The Matrix Template Library is a C++ class library for basic linear algebra. The MTL is designed for high-performance while at the same time taking advantage of the generic programming paradigm (ala the STL) to allow much greater flexibility and breadth of functionality. Many new and advanced programming techniques were used in the construction of this library. The MTL is a low level library in the sense that the user must be conscious of the matrix type being used, and that all computationally expensive operations are explicit. The MTL is not a C++ Matlab. Nevertheless, the interface is designed to be simple and easy to use. The matrix types provided include compressed sparse row/column, banded, packed, diagonal (and tridiagonal), envelope, array of pointers, and of course dense matrices. All matrix types share a common and easy to use interface. The algorithms consist of the traditional basic linear algebra routines (from the BLAS level-1 to 3) which includes matrix and vector arithmetic as well as operations such as backward substitution and norm calculations.