1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
#include <iomanip>
#include <iostream>
#include "matrix.hpp"

template<typename Matrix>
void print_matrix(const Matrix& 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;
   }
}

int main() {
   Matrix<double> A(7, 8, StorageOrder::ColMajor);
   for (std::size_t j = 0; j < A.n; ++j) {
      for (std::size_t i = 0; i < A.m; ++i) {
	 A(i, j) = i * A.n + j;
      }
   }
   std::cout << "A:" << std::endl; print_matrix(A);

   Matrix<float> B(3, 3, StorageOrder::RowMajor);
   for (std::size_t i = 0; i < B.m; ++i) {
      for (std::size_t j = 0; j < B.n; ++j) {
	 B(i, j) = j * B.m + i;
      }
   }
   std::cout << std::endl << "B:" << std::endl; print_matrix(B);
}