VCCC  2024.05
VisualCamp Common C++ library
Matrix< T, m, n > Class Template Reference

#include <vccc/__math/matrix/matrix.hpp>

+ Inheritance diagram for Matrix< T, m, n >:

Detailed Description

template<typename T, int m, int n>
class vccc::Matrix< T, m, n >

All matrix operations are using expression template

Template Parameters
T
m
n

Public Types

using value_type = T
 
using matrix_type = Matrix< T, m, n >
 
using base_type = MatrixBase< matrix_type >
 
using diag_type = Matrix< T, Matrix::shortdim, 1 >
 
- Public Types inherited from MatrixBase< Matrix< T, m, n > >
enum  
 
using derived_type = Matrix< T, m, n >
 
using derived_traits = internal::math::traits< derived_type >
 
using value_type = typename derived_traits::value_type
 

Public Member Functions

constexpr Matrix ()
 Create a zero matrix. More...
 
constexpr Matrix (T v0)
 
constexpr Matrix (T v0, T v1)
 
constexpr Matrix (T v0, T v1, T v2)
 
constexpr Matrix (T v0, T v1, T v2, T v3)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9, T v10)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9, T v10, T v11)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9, T v10, T v11, T v12)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9, T v10, T v11, T v12, T v13)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9, T v10, T v11, T v12, T v13, T v14)
 
constexpr Matrix (T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9, T v10, T v11, T v12, T v13, T v14, T v15)
 
template<std::size_t N, std::enable_if_t<(N<=m *n), int > = 0>
constexpr Matrix (const T(&arr)[N])
 Construct from an array. More...
 
template<typename E , std::enable_if_t< internal::math::is_same_size< matrix_type, E >::value &&internal::math::is_same_type< matrix_type, E >::value, int > = 0>
constexpr Matrix (const MatrixBase< E > &expr)
 Construct from matrix expression. More...
 
template<typename E , std::enable_if_t< internal::math::is_same_size< matrix_type, E >::value &&internal::math::is_same_type< matrix_type, E >::value, int > = 0>
constexpr Matrixoperator= (const MatrixBase< E > &expr)
 Assign from matrix expression. More...
 
template<typename U , std::enable_if_t< std::is_constructible< U, const value_type & >::value, int > = 0>
constexpr Matrix< U, m, n > AsType () const
 Create a matrix with a different type. More...
 
template<int rows, int cols = (m * n) / rows, std::enable_if_t< m *n==rows *cols, int > = 0>
constexpr Matrix< T, rows, colsReshape () const
 Create a matrix with a different shape but same size. More...
 
constexpr value_typeoperator[] (std::size_t i) noexcept
 Access element ith element from the beginning as if the Matrix is 1-D The behavior is undefined if i >= size. More...
 
constexpr const value_typeoperator[] (std::size_t i) const noexcept
 
constexpr value_typeoperator() (std::size_t i) noexcept
 Access element ith element from the beginning as if the Matrix is 1-D The behavior is undefined if i >= size. More...
 
constexpr const value_typeoperator() (std::size_t i) const noexcept
 
constexpr value_typeoperator() (std::size_t i, std::size_t j) noexcept
 Access element at (i, j) The behavior is undefined if i * j > size More...
 
constexpr const value_typeoperator() (std::size_t i, std::size_t j) const noexcept
 
- Public Member Functions inherited from MatrixBase< Matrix< T, m, n > >
constexpr value_type operator() (std::size_t i) const
 static polymorphic virtual-like member functions More...
 
constexpr value_type operator() (std::size_t i, std::size_t j) const
 
constexpr value_type operator[] (std::size_t i) const
 
constexpr const derived_typederived () const
 
constexpr derived_typederived ()
 

Static Public Member Functions

constexpr static Matrix all (T value)
 Create all-value matrix. More...
 
constexpr static Matrix zeros ()
 Create zero matrix. More...
 
constexpr static Matrix ones ()
 Create all-ones matrix. More...
 
constexpr static Matrix diag (const diag_type &value)
 Create a diagonal matrix. More...
 
template<typename Dummy = void, std::enable_if_t< std::is_void< Dummy >::value &&(n==m), int > = 0>
constexpr static Matrix eye ()
 Create an identity matrix. More...
 

Friends

template<typename U , int p, int q>
class Matrix
 

Member Typedef Documentation

◆ base_type

◆ diag_type

using diag_type = Matrix<T, Matrix::shortdim, 1>

◆ matrix_type

using matrix_type = Matrix<T, m, n>

◆ value_type

using value_type = T

Constructor & Destructor Documentation

◆ Matrix() [1/19]

constexpr Matrix ( )
constexpr

◆ Matrix() [2/19]

constexpr Matrix ( v0)
explicitconstexpr

◆ Matrix() [3/19]

constexpr Matrix ( v0,
v1 
)
constexpr

◆ Matrix() [4/19]

constexpr Matrix ( v0,
v1,
v2 
)
constexpr

◆ Matrix() [5/19]

constexpr Matrix ( v0,
v1,
v2,
v3 
)
constexpr

◆ Matrix() [6/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4 
)
constexpr

◆ Matrix() [7/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5 
)
constexpr

◆ Matrix() [8/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6 
)
constexpr

◆ Matrix() [9/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7 
)
constexpr

◆ Matrix() [10/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8 
)
constexpr

◆ Matrix() [11/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
v9 
)
constexpr

◆ Matrix() [12/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
v9,
v10 
)
constexpr

◆ Matrix() [13/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
v9,
v10,
v11 
)
constexpr

◆ Matrix() [14/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
v9,
v10,
v11,
v12 
)
constexpr

◆ Matrix() [15/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
v9,
v10,
v11,
v12,
v13 
)
constexpr

◆ Matrix() [16/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
v9,
v10,
v11,
v12,
v13,
v14 
)
constexpr

◆ Matrix() [17/19]

constexpr Matrix ( v0,
v1,
v2,
v3,
v4,
v5,
v6,
v7,
v8,
v9,
v10,
v11,
v12,
v13,
v14,
v15 
)
constexpr

◆ Matrix() [18/19]

constexpr Matrix ( const T(&)  arr[N])
inlineexplicitconstexpr

If the size of an array is smaller than the size of the matrix, remaining elements is initialized to 0

This constructor does not participate in overload resolution if the size of an array is greater than the size of the matrix.

Template Parameters
N
Parameters
arr

◆ Matrix() [19/19]

constexpr Matrix ( const MatrixBase< E > &  expr)
inlineconstexpr
Template Parameters
E
Parameters
expr

Member Function Documentation

◆ all()

constexpr static Matrix all ( value)
inlinestaticconstexpr

◆ AsType()

constexpr Matrix<U, m, n> AsType ( ) const
inlineconstexpr
Template Parameters
UNew type
Returns
Matrix<U, m, n>

◆ diag()

constexpr static Matrix diag ( const diag_type value)
inlinestaticconstexpr

◆ eye()

constexpr static Matrix eye ( )
inlinestaticconstexpr

◆ ones()

constexpr static Matrix ones ( )
inlinestaticconstexpr

◆ operator()() [1/4]

constexpr const value_type& operator() ( std::size_t  i) const
inlineconstexprnoexcept

◆ operator()() [2/4]

constexpr value_type& operator() ( std::size_t  i)
inlineconstexprnoexcept
Parameters
i
Returns
Element at the given index

◆ operator()() [3/4]

constexpr const value_type& operator() ( std::size_t  i,
std::size_t  j 
) const
inlineconstexprnoexcept

◆ operator()() [4/4]

constexpr value_type& operator() ( std::size_t  i,
std::size_t  j 
)
inlineconstexprnoexcept
Parameters
i
j
Returns
Element at the given index

◆ operator=()

constexpr Matrix& operator= ( const MatrixBase< E > &  expr)
inlineconstexpr
Template Parameters
E
Parameters
expr
Returns
*this

◆ operator[]() [1/2]

constexpr const value_type& operator[] ( std::size_t  i) const
inlineconstexprnoexcept

◆ operator[]() [2/2]

constexpr value_type& operator[] ( std::size_t  i)
inlineconstexprnoexcept
Parameters
i
Returns
Element at the given index

◆ Reshape()

constexpr Matrix<T, rows, cols> Reshape ( ) const
inlineconstexpr
Template Parameters
rowsNew rows
colsNew columns
Returns

◆ zeros()

constexpr static Matrix zeros ( )
inlinestaticconstexpr

Friends And Related Function Documentation

◆ Matrix

friend class Matrix
friend

The documentation for this class was generated from the following files: