Программа предназначена для выполнения различных операций над квадратными матрицами с целочисленными и вещественными значениями
- C компилятор
- Стандартные библиотеки C
- Make (Опционально, для сборки)
Структура квадратной матрицы содержит 3 поля
| Поле | Тип поля | Описание |
|---|---|---|
| size | u_int (unsigned int) | Размер квадратной матрицы |
| data | void* | Указатель на начало блока памяти, хранящего значения матрицы |
| info | Typeinfo* (Тип библиотеки) | Определяет тип матрицы (целочисленная / вещественная) и операции над ней (виртуальная таблица) |
Структура виртуальной таблицы (TypeInfo) имеет 5 полей. Дополнительно описана сигнатура бинарной операции
| Поле | Тип поля | Описание |
|---|---|---|
| size | u_int (unsigned int) | Размер квадратной матрицы |
| add | BinaryOperator | Указатель на начало блока памяти, хранящего значения матрицы |
| multiply | BinaryOperator | Определяет тип матрицы (целочисленная / вещественная) и операции над ней (виртуальная таблица) |
| void | const void* | Указатель на функцию вывода числа |
| void | void* data | Указатель на функцию для инициализации числа нулем |
Сигнатура бинарной операции
(*BinaryOperator)(const void* arg1, const void* arg2, void* result);
Библиотека работает с квадратными матрицами из целых или вещественных чисел. При работе вещественные числа отображаются до трех знаков после запятой. Список поддерживаемых функций:
- Создание матрицы
- Вывод матрицы
- Копирование матрицы
- Сложение квадратных матриц
- Умножение квадратных матриц
- Умножение квадратной матрицы на скаляр
- Прибавление к строке линейной комбинации других строк
В лабораторной работе реализовано модульное тестирование функционала библиотеки
| Группа тестов | Количество тестов | Тестируемая функция | Что делает функция |
|---|---|---|---|
| 1 | 15 | create_matrix | Создание матрицы |
| 2 | 13 | set_elem | Установка значения элементу матрицы |
| 3 | 11 | matrix_add | Сложение квадратных матриц |
| 4 | 15 | matrix_multiply | Умножение квадратных матриц |
| 5 | 13 | matrix_on_scalar | Умножение матрицы на скаляр |
| 6 | 11 | add_linear_combination | Прибавление к строке линейной комбинации других строк |
| 7 | 9 | integer_add, integer_multiply | Сложение и умножение целых чисел |
| 8 | 9 | double_add, double_multiply | Сложение и умножение вещественных чисел |
Через Makefile
make
В результате выполнения команды собираются библиотека libmatrix.a, в зависимости от нее собирается тестовый файл tests.exe
Лабораторная работа с интерфейсом содержится в lab_1.exe