eigen

Высокопроизводительная библиотека шаблонов C++ для линейной алгебры, реализующая операции с матрицами, векторами, числовыми решателями и связанными алгоритмами. Библиотека использует метапрограммирование на этапе компиляции для генерации оптимизированного кода, обеспечивая производительность, сравнимую с низкоуровневыми библиотеками (BLAS/LAPACK), при сохранении удобного объектно-ориентированного интерфейса. Eigen поддерживает как статические (фиксированного размера), так и динамические (изменяемого размера) структуры данных с автоматической векторизацией вычислений через SIMD-инструкции.

Особенности

  • поддержка матричных и векторных операций с фиксированными и динамическими размерами;
  • автоматическая векторизация вычислений с использованием SIMD-инструкций (SSE, AVX, NEON);
  • численные алгоритмы: линейные решатели, разложения матриц, собственные значения;
  • модульная архитектура с минимальными зависимостями;
  • кроссплатформенность и поддержка стандартов C++11 и выше.

Основные компоненты

Библиотека предоставляет комплексный API для линейной алгебры, организованный в модули для различных типов операций (подробнее с документацией можно ознакомиться здесь):

Модуль базовых операций (Core)

Фундаментальный модуль, определяющий типы данных и основные операции линейной алгебры. Включает шаблонные классы для матриц (Matrix), векторов (Vector), массивов (Array) и базовые арифметические операции. Модуль обеспечивает управление памятью, доступ к элементам и элементарные операции.

  • Eigen::Matrix — шаблонный класс для представления матриц с фиксированными или динамическими размерами;
  • Eigen::Vector — специализация Matrix для векторов (столбцов или строк);
  • Eigen::Array — класс для поэлементных операций (в отличие от матричных операций);
  • Eigen::Map — класс для отображения существующих массивов памяти в объекты Eigen без копирования.

Модуль геометрии (Geometry)

Модуль для работы с геометрическими преобразованиями и кинематикой. Предоставляет классы для представления и манипуляции поворотами, трансляциями, масштабированием в 2D и 3D пространстве. Включает преобразования между различными представлениями (углы Эйлера, кватернионы, матрицы поворота).

  • Eigen::Quaternion — класс для представления и операций с кватернионами;
  • Eigen::AngleAxis — представление поворота как оси и угла;
  • Eigen::Transform — аффинные и проективные преобразования в 2D/3D;
  • Eigen::Translation — класс для представления трансляций.

Модуль линейных решателей (Linear Solvers)

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

  • Eigen::LLT — разложение Холецкого для симметричных положительно определенных матриц;
  • Eigen::LDLT — разложение LDLT для симметричных матриц;
  • Eigen::FullPivLU — полное LU-разложение с выбором ведущего элемента;
  • Eigen::HouseholderQR, Eigen::ColPivHouseholderQR — QR-разложения;

Модуль разреженных матриц (Sparse)

Модуль для работы с разреженными матрицами и соответствующими алгоритмами. Предоставляет эффективные структуры хранения (CSR, CSC), итераторы по ненулевым элементам и оптимизированные операции. Включает итерационные решатели для систем с разреженными матрицами.

  • Eigen::SparseMatrix — шаблонный класс для хранения разреженных матриц;
  • Eigen::SparseVector — класс для разреженных векторов;
  • Eigen::ConjugateGradient, Eigen::BiCGSTAB — итерационные решатели;
  • Eigen::SparseLU, Eigen::SparseQR — прямые методы для разреженных систем.

Модуль собственных значений (Eigenvalues)

Модуль для вычисления собственных значений и собственных векторов матриц. Реализует алгоритмы для симметричных и несимметричных матриц, включая методы для задач большой размерности и специализированные алгоритмы для эрмитовых матриц.

  • Eigen::SelfAdjointEigenSolver — решатель для самосопряженных (эрмитовых) матриц;
  • Eigen::ComplexEigenSolver — решатель для комплексных матриц;
  • Eigen::GeneralizedSelfAdjointEigenSolver — обобщенная задача на собственные значения.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "eigen/3.4.0@aurora",
    )    

Процесс локальной сборки описан в документации.

eigen

Eigen is a C++ template library for linear algebra: matrices, vectors,
Лицензия
MPL-2.0
Версия
Домашняя страница
Скачать
package
1.42 Mb
MD5: cbe99cb51be49b5c26519df27ccd943b
Updated: 16.10.2025, 23:07:16
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.