Pásovec (knihovna C ++) - Armadillo (C++ library)
Stabilní uvolnění | 9. 850 / 9. února 2020[1] |
---|---|
Napsáno | C ++ |
Operační systém | Cross-platform |
K dispozici v | Angličtina |
Typ | Softwarová knihovna |
Licence | Apache 2.0 (otevřený zdroj ) |
webová stránka | arma |
Pásovec je lineární algebra softwarová knihovna pro Programovací jazyk C ++. Jeho cílem je poskytnout efektivní a efektivní základní výpočty a zároveň mít jednoduché a snadno použitelné rozhraní. Jeho zamýšlenými cílovými uživateli jsou vědci a inženýři.
Podporuje celé číslo, plovoucí desetinnou čárku (singl a dvojnásobek přesnost), komplexní čísla a podmnožina trigonometrický a statistika funkce. Husté a řídké matice jsou podporovány.[2] Rozličný maticové rozklady jsou poskytovány prostřednictvím volitelné integrace s Linear Algebra PACKage (LAPACK ), Automaticky vyladěný software lineární algebry (ATLAS) a ARPACK.[3][4] Vysoce výkonné náhradní knihovny BLAS / LAPACK, jako je OpenBLAS a Intel MKL lze také použít.
Knihovna zaměstnává a zpožděné hodnocení přístup (během čas kompilace ) spojit několik operací do jedné a snížit (nebo eliminovat) potřebu dočasných. Je-li to možné, je pořadí operací optimalizováno. Zpožděného vyhodnocení a optimalizace je dosaženo prostřednictvím metaprogramování šablon.
Pásovec je příbuzný Zvýšit Knihovna základních lineárních algebraových podprogramů (uBLAS), která také používá metaprogramování šablon. Armadillo však staví na ATLAS a LAPACK knihovny, čímž poskytuje optimalizace a funkce závislé na stroji, které nejsou přítomny v uBLAS.
to je open-source software distribuováno pod tolerancí Licence Apache, což je použitelné pro rozvoj oba otevřený zdroj a proprietární software. Projekt je podporován NICTA výzkumné centrum v Austrálii.
Příklad v C ++ 11
Zde je triviální příklad demonstrující funkčnost Armadilla:
// Kompilace s:// $ g ++ -std = c ++ 11 main.cpp -o název_souboru -O2 -larmadillo#zahrnout <iostream>#zahrnout <armadillo>#zahrnout <cmath>int hlavní(){ // ^ // Pozice částice // | arma::vec Poz = {{0}, // | (0,1) {1}}; // + --- x -> // Rotační matice dvojnásobek phi = -3.1416/2; arma::rohož RotM = {{+cos(phi), -hřích(phi)}, {+hřích(phi), +cos(phi)}}; Poz.tisk("Aktuální poloha částice:"); std::cout << "Otočení bodu" << phi*180/3.1416 << „deg“ << std::konec; Poz = RotM*Poz; Poz.tisk("Nová poloha částice:"); // ^ // x (1,0) // | // +------> vrátit se 0;}
Příklad v C ++ 98
Tady je další triviální příklad v C ++ 98:
#zahrnout <iostream>#zahrnout <armadillo>int hlavní(){ arma::vec b; b << 2.0 << 5.0 << 2.0; // arma :: endr představuje konec řádku v matici arma::rohož A; A << 1.0 << 2.0 << arma::endr << 2.0 << 3.0 << arma::endr << 1.0 << 3.0 << arma::endr; std::cout << "Řešení nejmenších čtverců:"; std::cout << arma::řešit(A,b) << ''; vrátit se 0;}
Viz také
- mlpack
- Seznam softwaru pro numerickou analýzu
- Seznam numerických knihoven
- Numerická lineární algebra
- Vědecké výpočty
Reference
- ^ "Knihovna matic Armadillo C ++ / Novinky: Poslední příspěvky". Citováno 9. února 2020 - přes SourceForge.
- ^ Conrad Sanderson a Ryan Curtin (2018). Uživatelsky přívětivá hybridní třída řídkých matic v C ++. Lecture Notes in Computer Science (LNCS), Vol. 10931, str. 422-430. arXiv:1805.03380. doi:10.1007/978-3-319-96418-8_50.
- ^ Conrad Sanderson a Ryan Curtin (2016). „Armadillo: knihovna C ++ založená na šabloně pro lineární algebru“. Journal of Open Source Software. 1 (2): 26. Bibcode:2016JOSS .... 1 ... 26S. doi:10,21105 / joss.00026.
- ^ Ryan Curtin; et al. (2013). „MLPACK: Škálovatelná knihovna strojového učení C ++“. Journal of Machine Learning Research. 14 (Březen): 801–805. arXiv:1210.6293. Bibcode:2012arXiv1210.6293C.