Armadillo (библиотека C ++)

редактировать
Библиотека Armadillo C ++
Стабильная версия 9.850 / 9 февраля 2020 г.; 8 месяцев назад (2020-02-09)
Написано наC ++
Операционная система Кросс-платформенная
Доступно наанглийском
Тип Программная библиотека
Лицензия Apache 2.0 (открытый исходный код )
Веб-сайтarma.sourceforge.net

Armadillo - это линейная алгебра программная библиотека для языка программирования C ++. Она нацелена на обеспечение эффективных и оптимизированных базовых вычислений, в то же время имея простой и легкий в использовании интерфейс. Ее предполагаемыми целевыми пользователями являются ученые и инженеры.

Он поддерживает целые числа, числа с плавающей запятой (одинарная и двойная точность), комплексные числа и подмножество тригонометрических и статистика. Поддерживаются плотные и разреженные матрицы. Различные разложения матриц предоставляются посредством дополнительной интеграции с Linear Algebra PACKage (LAPACK ), Автоматически настраиваемое ПО линейной алгебры (ATLAS) и ARPACK. Высокопроизводительный BLAS / LAPAC Также можно использовать замещающие библиотеки K, такие как OpenBLAS и Intel MKL.

В библиотеке используется подход отложенной оценки (во время времени компиляции ) для объединения нескольких операций в одну и уменьшения (или устранения) необходимости во временных библиотеках. Где применимо, порядок операций оптимизирован. Отсроченная оценка и оптимизация достигаются с помощью метапрограммирования шаблона.

Armadillo связан с библиотекой Boost Basic Linear Algebra Subprograms (uBLAS), которая также использует метапрограммирование шаблона. Однако Armadillo основан на библиотеках ATLAS и LAPACK, тем самым обеспечивая машинно-зависимые оптимизации и функции, отсутствующие в uBLAS.

Это программное обеспечение с открытым исходным кодом, распространяемое по разрешающей лицензии Apache, что делает его применимым для разработки как с открытым исходным кодом и проприетарное программное обеспечение. Проект поддерживается исследовательским центром NICTA в Австралии.

Содержание
  • 1 Пример на C ++ 11
  • 2 Пример на C ++ 98
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
Пример на C ++ 11

Вот тривиальный пример, демонстрирующий функциональность Armadillo:

// Компиляция с: // $ g ++ -std = c ++ 11 main.cpp -o имя_файла -O2 -larmadillo #include #include #include int main () {// ^ // Положение частицы // | arma :: vec Pos = {{0}, // | (0,1) {1}}; // + --- x ->// Матрица вращения double phi = -3.1416 / 2; arma :: mat RotM = {{+ cos (phi), -sin (phi)}, {+ sin (phi), + cos (phi)}}; Pos.print ("Текущее положение частицы:"); 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; }
Пример на C ++ 98

Вот еще один тривиальный пример на C ++ 98:

#include #include 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; }
См. также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-11 18:05:17
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте