diff options
author | Nao Pross <naopross@thearcway.org> | 2019-02-22 23:08:15 +0100 |
---|---|---|
committer | Nao Pross <naopross@thearcway.org> | 2019-02-22 23:08:15 +0100 |
commit | e624d81e54ae481383afbd772bf87850bf75f2d7 (patch) | |
tree | ef47b37fe7d2a2e7c4d22b9c69f4a75965a6c51f /include/mm/mmmatrix.hpp | |
parent | Add initial implementation for mmmatrix and update to build.ninja (diff) | |
download | libmm-e624d81e54ae481383afbd772bf87850bf75f2d7.tar.gz libmm-e624d81e54ae481383afbd772bf87850bf75f2d7.zip |
Undo directory structure change
Diffstat (limited to 'include/mm/mmmatrix.hpp')
-rw-r--r-- | include/mm/mmmatrix.hpp | 59 |
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()); -} |