Skip to content
zeroqxqPublic

Latest commit

 

History

46 Commits

Folders and files

Repository files navigation

ZiMatLib

Header-only библиотека на C++17 для создания и обработки матриц.

C++ Stars License Status Размер репозитория License Issues Последний коммит

ZiMatLib предоставляет шаблон zimat::matrix<T> с настраиваемой базой индексации, арифметикой, транспонированием, статистическими методами и вычислением определителя для матриц до третьего порядка.

Возможности

  • Непрерывное хранение элементов в порядке строк (row-major).
  • Доступ к элементам с индексами от 0, 1 или другой заданной базы.
  • Сложение, вычитание и матричное умножение, умножение и деление на скаляр.
  • Транспонирование, сумма, минимумы и максимумы, проверки матрицы.
  • Определитель для квадратных матриц 1 × 1, 2 × 2 и 3 × 3.

Требования и подключение

Нужен компилятор с поддержкой C++17. Библиотека подключается через заголовочный файл:

#include <zimat/zimat.hpp>

При использовании CMake подключите репозиторий как поддиректорию:

add_subdirectory(path/to/ZiMatLib)
target_link_libraries(my_app PRIVATE zimat)

Цель zimat — INTERFACE; отдельная сборка библиотеки не нужна.

Быстрый пример

#include <zimat/zimat.hpp>
#include <iostream>

int main() {
    zimat::matrix<int> a(2, 2);
    a(1, 1) = 1; a(1, 2) = 2;
    a(2, 1) = 3; a(2, 2) = 4;

    auto transposed = a.transpose();
    auto doubled = a * 2;

    std::cout << transposed(1, 2) << '\n'; // 3
    std::cout << doubled(2, 2) << '\n';    // 8
}

По умолчанию индексация начинается с 1. Чтобы начать с 0, передайте 0 третьим аргументом конструктора: zimat::matrix<int> a(2, 2, 0);.

Сборка примера

cmake -S . -B build
cmake --build build

Документация

Полное описание публичных методов, исключений и ограничений реализации: документация.

Лицензия

Проект распространяется по лицензии, указанной в файле LICENSE.

Releases

Contributors

Languages