Biblioteca de șabloane Matrix | |
---|---|
Tip de | Software de matematică |
Scris in | C++ |
Sistem de operare | Linux , Unix , Mac OS X , Windows |
Limbi de interfață | C++ |
Licență | Boost Software License |
Site-ul web | mtl4.org |
Matrix Template Library (MTL) este o bibliotecă de algebră liniară pentru programele C++ .
MTL folosește șabloane C++ , care reduc foarte mult codul programului. Toate matricele și vectorii sunt validi în toate formatele de numere clasice: float, double, complex <float>sau complex <double>.
Mai mult, programarea generică permite tipuri arbitrare atâta timp cât efectuează operațiunile necesare. De exemplu, puteți utiliza formate numerice arbitrare (de exemplu, unsigned short), tipuri pentru aritmetica intervalului (de exemplu, boost::interval din biblioteca Boost , cuaternioni (de exemplu, boost::quaternion), tipuri de înaltă precizie (de exemplu , GNU Multi-Precision Library ) și tipurile corespunzătoare definite de utilizator.
MTL acceptă diverse implementări ale matricei dense și ale matricei rare . MTL2 a fost dezvoltat de Jeremy Siek și Andrew Lumsdaine. [unu]
Cea mai recentă versiune, MTL4, a fost dezvoltată de Peter Gottschling și Andrew Lumsdaine. Conține majoritatea caracteristicilor MTL2 și este, de asemenea, îmbunătățit cu noi tehnici de optimizare, cum ar fi meta-tuning, de exemplu, derularea unei bucle de container de dimensiuni dinamice poate fi definită într-un apel de funcție. Scalabilitatea performanței independentă de platformă este obținută prin structura de date recursive și algoritmi recursivi. [2]
Aplicațiile universale pot fi scrise în notație nativă (codificare), cum ar fi v += A*q - w; în timp ce biblioteca însăși invocă algoritmii corespunzători: înmulțirea matrice-vector sau înmulțirea matrice sau multiplicarea vector-scalar, etc. Scopul este de a ascunde problemele de implementare în bibliotecă și de a oferi o interfață ușor de utilizat. MTL4 este utilizat în diverse pachete, cum ar fi Metoda Elementelor Finite și Metoda Volumului Finit , cum ar fi Proiectul FEniCS . [3]