1#ifndef LIBSBX_MATH_MATRIX_HPP_
2#define LIBSBX_MATH_MATRIX_HPP_
6#include <libsbx/math/concepts.hpp>
7#include <libsbx/math/vector.hpp>
11template<std::
size_t Columns, std::
size_t Rows, scalar Type>
12requires (Columns > 1u && Rows > 1u)
17 using value_type = Type;
18 using reference = value_type&;
19 using const_reference =
const value_type&;
20 using size_type = std::size_t;
23 template<scalar Other = value_type>
26 [[nodiscard]]
constexpr auto operator[](size_type index)
noexcept ->
column_type&;
28 [[nodiscard]]
constexpr auto operator[](size_type index)
const noexcept ->
const column_type&;
30 template<scalar Other>
33 template<scalar Other>
36 template<scalar Other>
37 constexpr auto operator*=(Other scalar)
noexcept ->
basic_matrix&;
39 template<scalar Other>
40 constexpr auto operator/=(Other scalar)
noexcept ->
basic_matrix&;
44 template<scalar Other>
47 template<
typename... Args>
50 constexpr static auto identity()
noexcept ->
basic_matrix;
54 std::array<column_type, Columns> _columns;
58template<std::
size_t Columns, std::
size_t Rows, scalar Lhs, scalar Rhs>
61template<std::
size_t Columns, std::
size_t Rows, scalar Lhs, scalar Rhs>
64template<std::
size_t Columns, std::
size_t Rows, scalar Lhs, scalar Rhs>
67template<std::
size_t Columns, std::
size_t Rows, scalar Lhs, scalar Rhs>
70template<std::
size_t Columns, std::
size_t Rows, scalar Lhs, scalar Rhs>
75#include <libsbx/math/matrix.ipp>
Definition: matrix.hpp:13
Definition: vector.hpp:19