Matrix-mallikirjasto | |
---|---|
Tyyppi | Matemaattinen ohjelmisto |
Sisään kirjoitettu | C++ |
Käyttöjärjestelmä | Linux , Unix , Mac OS X , Windows |
Käyttöliittymäkielet | C++ |
Lisenssi | Boost Software License |
Verkkosivusto | mtl4.org |
Matrix Template Library (MTL) on lineaarinen algebrakirjasto C++- ohjelmille .
MTL käyttää C++-malleja , jotka vähentävät huomattavasti ohjelmakoodia. Kaikki matriisit ja vektorit ovat voimassa kaikissa klassisissa lukumuodoissa: float, double, complex <float>tai complex <double>.
Lisäksi yleinen ohjelmointi sallii mielivaltaiset tyypit, kunhan ne suorittavat tarvittavat toiminnot. Voit esimerkiksi käyttää mielivaltaisia numeerisia muotoja (esim. unsigned short), intervalliaritmeettisia tyyppejä (esimerkiksi boost::interval Boost-kirjastosta , kvaternioita (esimerkiksi boost::quaternion), erittäin tarkkoja tyyppejä (esim. , GNU Multi-Precision Library ) ja vastaavat käyttäjän määrittämät tyypit.
MTL tukee erilaisia tiheän matriisin ja harvan matriisin toteutuksia . MTL2:n ovat kehittäneet Jeremy Siek ja Andrew Lumsdaine. [yksi]
Uusimman version, MTL4, ovat kehittäneet Peter Gottschling ja Andrew Lumsdaine. Se sisältää suurimman osan MTL2-ominaisuuksista, ja sitä on myös parannettu uusilla optimointitekniikoilla, kuten meta-virittämisellä. Esimerkiksi dynaamisesti kokoisen konttisilmukan purkaminen voidaan määrittää funktiokutsussa. Alustasta riippumaton suorituskyvyn skaalautuvuus saavutetaan rekursiivisen tietorakenteen ja rekursiivisten algoritmien avulla. [2]
Universaalit sovellukset voidaan kirjoittaa alkuperäisellä merkinnällä (koodauksella), kuten v += A*q - w; kun taas kirjasto itse vetoaa sopiviin algoritmeihin: matriisi-vektori kertolasku tai matriisi kertominen tai vektori-skalaari kertominen jne. Tavoitteena on piilottaa toteutusongelmat kirjaston sisällä ja tarjota käyttäjäystävällinen käyttöliittymä. MTL4:ää käytetään erilaisissa paketeissa, kuten Finite Element Methodissa ja Finite Volume Methodissa , kuten FEniCS Projectissa . [3]