#include <iomanip> #include <iostream> #include "matrix.hpp" template<typename T> void print_matrix(const Matrix<T>& A) { for (std::size_t i = 0; i < A.m; ++i) { for (std::size_t j = 0; j < A.n; ++j) { std::cout << " " << std::setw(8) << A(i, j); } std::cout << std::endl; } } template<typename T, typename Initializer> void init_matrix(Matrix<T>& A, Initializer&& initializer) { for (std::size_t i = 0; i < A.m; ++i) { for (std::size_t j = 0; j < A.n; ++j) { A(i, j) = initializer(i, j); } } } template<typename T> T sum_matrix(const Matrix<T>& A) { T sum{}; for (std::size_t i = 0; i < A.m; ++i) { for (std::size_t j = 0; j < A.n; ++j) { sum += A(i, j); } } return sum; } int main() { Matrix<double> A(7, 8, StorageOrder::ColMajor); init_matrix(A, [&A](std::size_t i, std::size_t j) { return i * A.n + j; }); std::cout << "A:" << std::endl; print_matrix(A); std::cout << std::endl << "sum(A) = " << sum_matrix(A) << std::endl; } |