summaryrefslogtreecommitdiffstats
path: root/include/mm/mmmatrix.hpp
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2019-02-22 23:08:15 +0100
committerNao Pross <naopross@thearcway.org>2019-02-22 23:08:15 +0100
commite624d81e54ae481383afbd772bf87850bf75f2d7 (patch)
treeef47b37fe7d2a2e7c4d22b9c69f4a75965a6c51f /include/mm/mmmatrix.hpp
parentAdd initial implementation for mmmatrix and update to build.ninja (diff)
downloadlibmm-e624d81e54ae481383afbd772bf87850bf75f2d7.tar.gz
libmm-e624d81e54ae481383afbd772bf87850bf75f2d7.zip
Undo directory structure change
Diffstat (limited to 'include/mm/mmmatrix.hpp')
-rw-r--r--include/mm/mmmatrix.hpp59
1 files changed, 0 insertions, 59 deletions
diff --git a/include/mm/mmmatrix.hpp b/include/mm/mmmatrix.hpp
deleted file mode 100644
index 7934d87..0000000
--- a/include/mm/mmmatrix.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/* mmmatrix.hpp
- * Part of Mathematical library built (ab)using Modern C++ 17 abstractions.
- *
- * This library is not intended to be _performant_, it does not contain
- * hand written SMID / SSE / AVX optimizations. It is instead an example
- * of highly abstracted code, where matrices can contain any data type.
- *
- * As a challenge, the matrix data structure has been built on a container
- * of static capacity. But if a dynamic base container is needed, the code
- * should be easily modifiable to add further abstraction, by templating
- * the container and possibly the allocator.
- *
- * Naoki Pross <naopross@thearcway.org>
- * 2018 ~ 2019
- */
-#pragma once
-
-#include <cmath>
-#include <array>
-
-namespace mm {
- template<typename T, std::size_t Rows, std::size_t Cols>
- class basic_matrix;
-}
-
-template<typename T, std::size_t Rows, std::size_t Cols>
-class mm::basic_matrix {
-public:
- using type = T;
-
- static constexpr std::size_t rows = Rows;
- static constexpr std::size_t cols = Cols;
-
- basic_matrix() {}
-
- template<std::size_t Rows_, std::size_t Cols_>
- basic_matrix(const basic_matrix<T, Rows_, Cols_>& other);
-
- const T& at(std::size_t row, std::size_t col);
-
-private:
- std::array<T, (Rows * Cols)> data;
-};
-
-
-
-template<typename T, std::size_t Rows, std::size_t Cols>
-template<std::size_t ORows, std::size_t OCols>
-mm::basic_matrix<T, Rows, Cols>::basic_matrix(const basic_matrix<T, ORows, OCols>& other) {
- static_assert((ORows <= Rows),
- "cannot copy a taller matrix into a smaller one"
- );
-
- static_assert((OCols <= Cols),
- "cannot copy a larger matrix into a smaller one"
- );
-
- std::copy(std::begin(other.data), std::end(other.data), data.begin());
-}