Matrix mallbibliotek | |
---|---|
Sorts | Matematisk programvara |
Skrivet i | C++ |
Operativ system | Linux , Unix , Mac OS X , Windows |
Gränssnittsspråk | C++ |
Licens | Boost Software License |
Hemsida | mtl4.org |
Matrix Template Library (MTL) är ett linjärt algebrabibliotek för C++- program.
MTL använder C++-mallar , som kraftigt reducerar programkoden. Alla matriser och vektorer är giltiga i alla klassiska talformat: float, double, complex <float>eller complex <double>.
Dessutom tillåter generisk programmering godtyckliga typer så länge de utför de nödvändiga operationerna. Till exempel kan du använda godtyckliga numeriska format (till exempel unsigned short), typer för intervallaritmetik (till exempel boost::interval från Boost-biblioteket , quaternions (till exempel boost::quaternion), högprecisionstyper (till exempel , GNU Multi-Precision Library ), och motsvarande användardefinierade typer.
MTL stöder olika implementeringar av tät matris och gles matris . MTL2 utvecklades av Jeremy Siek och Andrew Lumsdaine. [ett]
Den senaste versionen, MTL4, utvecklades av Peter Gottschling och Andrew Lumsdaine. Den innehåller de flesta av MTL2-funktionerna och är också förbättrad med nya optimeringstekniker som meta-tuning, till exempel kan avveckling av en containerloop av dynamisk storlek definieras i ett funktionsanrop. Plattformsoberoende prestandaskalbarhet uppnås genom den rekursiva datastrukturen och rekursiva algoritmer. [2]
Universella applikationer kan skrivas i ursprunglig notation (kodning), såsom v += A*q - w; medan biblioteket självt anropar lämpliga algoritmer: matris-vektormultiplikation eller matrismultiplikation eller vektor-skalär multiplikation, etc. Målet är att dölja implementeringsproblem inom biblioteket och tillhandahålla ett användarvänligt gränssnitt. MTL4 används i olika paket såsom Finite Element Method och Finite Volume Method , såsom FEniCS Project . [3]