20 #ifndef INCLUDE_WYKOBI_MATRIX
21 #define INCLUDE_WYKOBI_MATRIX
32 template <
typename T, std::
size_t M, std::
size_t N>
42 const T&
operator()(std::size_t x, std::size_t y)
const {
return data[y][x]; }
44 T&
operator()(std::size_t x, std::size_t y) {
return data[y][x]; }
46 const T&
operator()(std::size_t i)
const {
return dptr[i]; }
50 const T&
operator[](std::size_t i)
const {
return dptr[i]; }
64 void swap(
const unsigned int& x1,
const unsigned int& y1,
65 const unsigned int& x2,
const unsigned int& y2);
67 std::size_t
size()
const {
return M * N; }
75 inline T
det(
const matrix<T, 1, 1>& matrix);
77 inline T
det(
const matrix<T, 2, 2>& matrix);
79 inline T
det(
const matrix<T, 3, 3>& matrix);
81 inline T
det(
const matrix<T, 4, 4>& matrix);
84 inline void transpose(matrix<T, 1, 1>& matrix);
86 inline void transpose(matrix<T, 2, 2>& matrix);
88 inline void transpose(matrix<T, 3, 3>& matrix);
90 inline void transpose(matrix<T, 4, 4>& matrix);
93 inline void inverse(matrix<T, 2, 2>& out_matrix,
94 const matrix<T, 2, 2>& in_matrix);
96 inline void inverse(matrix<T, 3, 3>& out_matrix,
97 const matrix<T, 3, 3>& in_matrix);
99 inline void inverse(matrix<T, 4, 4>& out_matrix,
100 const matrix<T, 4, 4>& in_matrix);
102 template <
typename T, std::
size_t N>
103 inline void inverse(matrix<T, N, N>& out_matrix,
104 const matrix<T, N, N>& in_matrix);
106 template <
typename T>
107 inline void eigen_values(
const matrix<T, 2, 2>& matrix, T& eigen_value1,
109 template <
typename T>
110 inline void eigenvector(
const matrix<T, 2, 2>& matrix,
111 vector2d<T>& eigenvector1, vector2d<T>& eigenvector2);
115 #include "wykobi_matrix.inl"