Армадилло (библиотека C++)
Стабильная версия | 12.6.6
/ 31 октября 2023 г [ 1 ] |
---|---|
Написано в | С++ |
Операционная система | Кросс-платформенный |
Доступно в | Английский |
Тип | Библиотека программного обеспечения |
Лицензия | Apache 2.0 ( с открытым исходным кодом ) |
Веб-сайт | рука |
Armadillo — это программная библиотека линейной алгебры для языка программирования C++ . Его цель — обеспечить эффективные и упрощенные базовые расчеты, в то же время имея простой и простой в использовании интерфейс. Его целевыми пользователями являются ученые и инженеры.
Он поддерживает целые числа, числа с плавающей запятой ( одинарной и двойной точности), комплексные числа и подмножество тригонометрических и статистических функций. плотные и разреженные матрицы . Поддерживаются [ 2 ] Различные матричные декомпозиции обеспечиваются посредством дополнительной интеграции с пакетом линейной алгебры ( LAPACK ), автоматически настраиваемым программным обеспечением линейной алгебры (ATLAS) и ARPACK . [ 3 ] высокопроизводительные библиотеки замены BLAS/LAPACK, такие как OpenBLAS и Intel MKL Также можно использовать .
Библиотека использует подход отложенной оценки (во время компиляции ), чтобы объединить несколько операций в одну и уменьшить (или исключить) необходимость во временных объектах. Там, где это применимо, порядок операций оптимизируется. Отложенная оценка и оптимизация достигаются посредством метапрограммирования шаблонов .
Armadillo связан с библиотекой Boost Basic Linear Algebra Subprograms (uBLAS), которая также использует метапрограммирование шаблонов . Однако Armadillo опирается на библиотеки ATLAS и LAPACK , тем самым обеспечивая машинно-зависимую оптимизацию и функции, отсутствующие в uBLAS.
Это программное обеспечение с открытым исходным кодом, распространяемое по разрешительной лицензии Apache , что делает его применимым для разработки как открытого, так и проприетарного программного обеспечения. Проект поддерживается исследовательским центром NICTA в Австралии.
Интерфейс . языка Python доступен через PyArmadillo пакет [ 4 ] что облегчает создание прототипов алгоритмов на Python с последующим относительно простым преобразованием в C++.
Armadillo — это основная зависимость mlpack. библиотеки машинного обучения [ 5 ] и библиотека ensmallen C++ для числовой оптимизации. [ 6 ]
Пример на С++ 11
[ редактировать ]Вот тривиальный пример, демонстрирующий функциональность Armadillo:
// Compile with:
// $ g++ -std=c++11 main.cpp -o file_name -O2 -larmadillo
#include <iostream>
#include <armadillo>
#include <cmath>
int main()
{
// ^
// Position of a particle // |
arma::vec Pos = {{0}, // | (0,1)
{1}}; // +---x-->
// Rotation matrix
double phi = -3.1416/2;
arma::mat RotM = {{+cos(phi), -sin(phi)},
{+sin(phi), +cos(phi)}};
Pos.print("Current position of the particle:");
std::cout << "Rotating the point " << phi*180/3.1416 << " deg" << std::endl;
Pos = RotM*Pos;
Pos.print("New position of the particle:"); // ^
// x (1,0)
// |
// +------>
return 0;
}
Пример на С++ 98
[ редактировать ]Вот еще один тривиальный пример на C++ 98:
#include <iostream>
#include <armadillo>
int main()
{
arma::vec b;
b << 2.0 << 5.0 << 2.0;
// arma::endr represents the end of a row in a matrix
arma::mat A;
A << 1.0 << 2.0 << arma::endr
<< 2.0 << 3.0 << arma::endr
<< 1.0 << 3.0 << arma::endr;
std::cout << "Least squares solution:\n";
std::cout << arma::solve(A,b) << '\n';
return 0;
}
См. также
[ редактировать ]- млпак
- Список программного обеспечения для численного анализа
- Список числовых библиотек
- Численная линейная алгебра
- Научные вычисления
Ссылки
[ редактировать ]- ^ "Матричная библиотека Armadillo C++ / Новости: Последние сообщения" . Проверено 6 ноября 2023 г. - через SourceForge .
- ^ Конрад Сандерсон и Райан Кертин (2018). Удобный для пользователя класс гибридной разреженной матрицы на C++ . Конспекты лекций по информатике (LNCS), Vol. 10931, стр. 422-430. arXiv : 1805.03380 . дои : 10.1007/978-3-319-96418-8_50 .
- ^ Конрад Сандерсон и Райан Кертин (2016). «Armadillo: основанная на шаблонах библиотека C++ для линейной алгебры» . Журнал программного обеспечения с открытым исходным кодом . 1 (2): 26. Бибкод : 2016JOSS....1...26S . дои : 10.21105/joss.00026 . hdl : 10072/387317 .
- ^ Джейсон Руменган; и др. (2021). «PyArmadillo: оптимизированная библиотека линейной алгебры для Python». Журнал программного обеспечения с открытым исходным кодом . 6 (66): 3051. arXiv : 2104.11120 . дои : 10.21105/joss.03051 .
- ^ Райан Кертин; и др. (2023). «mlpack 4: быстрая библиотека машинного обучения C++, работающая только с заголовками» . Журнал программного обеспечения с открытым исходным кодом . 8 (82): 5026. arXiv : 2302.00820 .
- ^ Райан Кертин; и др. (2021). «Увеличенная библиотека для гибкой числовой оптимизации» . Журнал исследований машинного обучения . 22 (166): 1–6. arXiv : 2108.12981 . Бибкод : 2021arXiv210812981C .
Внешние ссылки
[ редактировать ]- Числовые библиотеки C++
- Бесплатные компьютерные библиотеки
- Бесплатное математическое программное обеспечение
- Бесплатное научное программное обеспечение
- Бесплатное программное обеспечение, написанное на C++.
- Бесплатное статистическое программное обеспечение
- Численная линейная алгебра
- Программное обеспечение, использующее лицензию Apache