title: Matrix Template Library
text: # Matrix Template Library
  
  La Matrix Template Library (MTL) est une bibliothèque d'algèbre linéaire pour les programmes C++.
  
  La MTL utilise la programmation générique, qui réduit considérablement la longueur des codes. Toutes les matrices et vecteurs sont disponibles dans les formats numériques classiques: float, double, complex<float> et complex<double>. La programmation générique permit aussi l'utilisation de tous les types qui disposent les opérations nécessaires. En conséquence, on peut utiliser tous les formats des nombres entiers (p. ex. unsigned short), des types pour l'arithmétique d'intervalles (p. ex. Boost::interval), des quaternions (p. ex. Boost::quaternion), des types de précision supérieure (p. ex. GNU MP) et des nouveaux types appropriés. La MTL soutient plusieurs implémentations de matrices denses et de matrices creuses. La MTL2 a été développée dans l'université de l'Indiana par Jeremy Siek et Andrew Lumsdaine.
  
  La dernière version nommée MTL4, est actuellement développée par Peter Gottschling et Andrew Lumsdaine. Elle contient la majorité des fonctionnalités de MTL2 et ajoute des nouvelles techniques d'optimisation comme le meta-tuning, par exemple le déroulement des boucles dans les opérations de matrices/vecteurs de taille dynamique ce qui peut être spécifié dans l'appel de fonctions. D'une part, les applications génériques peuvent être écrites en notation naturelle, par exemple v += A*q - w;, d'autre part, la bibliothèque sélectionne les algorithmes appropriés : produits des matrices et vecteurs, ou produits matriciels ou multiplications des vecteurs par des scalaires, etc. Le but est d'encapsuler les détails techniques reliés à la performance dans la bibliothèque et de fournir aux scientifiques une interface intuitive.
  
  