FLAMES 0.1.0
Matrix-Empowered HLS Library
|
Matrix. More...
#include <core.hpp>
Public Types | |
using | element_type = T |
using | value_type = T |
Public Member Functions | |
Mat () | |
Construct a new Mat object. | |
Mat (T val) | |
Construct a new Mat object with initial value. | |
Mat (const Mat &mat) | |
Copy constructor from a Mat object. | |
template<typename T2 , size_t _rows, size_t _cols, MatType _type, std::enable_if_t<!std::is_same< T, T2 >::value &&type==_type &&n_rows==_rows &&n_cols==_cols, bool > = true> | |
Mat (const Mat< T2, _rows, _cols, _type > &mat) | |
template<typename T2 , size_t _rows, size_t _cols, MatType _type, std::enable_if_t< type !=_type &&n_rows==_rows &&n_cols==_cols, bool > = true> | |
Mat (const Mat< T2, _rows, _cols, _type > &mat) | |
Mat (const std::vector< T > &vec) | |
Construct a new Mat object from std::vector. | |
template<typename T2 > | |
Mat (std::initializer_list< T2 > list) | |
Mat (Init init) | |
Mat (const T *ptr, InitAfterwards opt=InitAfterwards::NONE) | |
Construct a new Mat object from raw data pointer. | |
Mat (T *const ptr, InitAfterwards opt=InitAfterwards::NONE) | |
~Mat () | |
Destroy the Mat object. | |
T | operator[] (size_t index) const |
Get read only element by row major index from the data array. | |
T & | operator[] (size_t index) |
Get writeable element by row major index from the data array. | |
T | operator() (size_t r, size_t c) const |
Get read only data element by row index and column index. | |
T & | operator() (size_t r, size_t c) |
Get writeable data element by row index and column index. | |
void | setValue (T val) |
Set all elements of the matrix to a value. | |
void | setZero () |
Set all elements of the matrix to zero. | |
bool | read (const std::string &file_name) |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 > | |
Mat & | add (const M1< T1, n_rows, n_cols, type, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type, _unused2... > &mat_R) |
Matrix plus matrix with same MatType. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::NORMAL &&(type1 !=MatType::NORMAL||type2 !=MatType::NORMAL), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into NORMAL. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::DIAGONAL &&(type1 !=MatType::DIAGONAL||type2 !=MatType::DIAGONAL), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into DIAGONAL. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SCALAR &&(type1 !=MatType::SCALAR||type2 !=MatType::SCALAR), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into SCALAR. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::UPPER &&(type1 !=MatType::UPPER||type2 !=MatType::UPPER), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into UPPER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::LOWER &&(type1 !=MatType::LOWER||type2 !=MatType::LOWER), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into LOWER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SUPPER &&(type1 !=MatType::SUPPER||type2 !=MatType::SUPPER), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into SUPPER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SLOWER &&(type1 !=MatType::SLOWER||type2 !=MatType::SLOWER), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into SLOWER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SYM &&(type1 !=MatType::SYM||type2 !=MatType::SYM), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into SYM. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::ASYM &&(type1 !=MatType::ASYM||type2 !=MatType::ASYM), bool > = true> | |
Mat & | add (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix plus matrix into ASYM. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | add (const M< T2, n_rows, n_cols, type2, _unused... > &mat_R) |
Matrix self plus a matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 > | |
Mat & | sub (const M1< T1, n_rows, n_cols, type, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type, _unused2... > &mat_R) |
Matrix minus matrix with same MatType. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::NORMAL &&(type1 !=MatType::NORMAL||type2 !=MatType::NORMAL), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into NORMAL. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::DIAGONAL &&(type1 !=MatType::DIAGONAL||type2 !=MatType::DIAGONAL), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into DIAGONAL. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SCALAR &&(type1 !=MatType::SCALAR||type2 !=MatType::SCALAR), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into SCALAR. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::UPPER &&(type1 !=MatType::UPPER||type2 !=MatType::UPPER), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into UPPER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::LOWER &&(type1 !=MatType::LOWER||type2 !=MatType::LOWER), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into LOWER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SUPPER &&(type1 !=MatType::SUPPER||type2 !=MatType::SUPPER), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into SUPPER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SLOWER &&(type1 !=MatType::SLOWER||type2 !=MatType::SLOWER), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into SLOWER. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::SYM &&(type1 !=MatType::SYM||type2 !=MatType::SYM), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into SYM. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, std::enable_if_t< type==MatType::ASYM &&(type1 !=MatType::ASYM||type2 !=MatType::ASYM), bool > = true> | |
Mat & | sub (const M1< T1, n_rows, n_cols, type1, _unused1... > &mat_L, const M2< T2, n_rows, n_cols, type2, _unused2... > &mat_R) |
Matrix minus matrix into ASYM. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | sub (const M< T2, n_rows, n_cols, type2, _unused... > &mat_R) |
Matrix self minus a matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename ScalarT , typename T2 , std::enable_if_t< std::is_arithmetic< std::remove_cv_t< std::remove_reference_t< ScalarT > > >::value, bool > = true> | |
Mat & | mul (const M< T2, n_rows, n_cols, type, _unused... > &mat, ScalarT s) |
Matrix times a scalar. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename ScalarT , typename T2 , std::enable_if_t< std::is_arithmetic< std::remove_cv_t< std::remove_reference_t< ScalarT > > >::value, bool > = true> | |
Mat & | mul (const M< T2, n_rows, n_cols, type, _unused... > &mat, std::complex< ScalarT > s) |
Matrix times a complex number. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, int AP_W, typename T2 > | |
Mat & | mul (const M< T2, n_rows, n_cols, type, _unused... > &mat, ap_int< AP_W > s) |
Matrix times ap_int integer. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, int AP_W, int AP_I, ap_q_mode AP_Q, ap_o_mode AP_O, int AP_N, typename T2 > | |
Mat & | mul (const M< T2, n_rows, n_cols, type, _unused... > &mat, ap_fixed< AP_W, AP_I, AP_Q, AP_O, AP_N > s) |
Matrix times ap_fixed float. | |
template<typename ScalarT , std::enable_if_t< std::is_arithmetic< std::remove_cv_t< std::remove_reference_t< ScalarT > > >::value, bool > = true> | |
Mat & | mul (ScalarT s) |
Matrix self multiply a scalar. | |
template<typename ScalarT , std::enable_if_t< std::is_arithmetic< std::remove_cv_t< std::remove_reference_t< ScalarT > > >::value, bool > = true> | |
Mat & | mul (std::complex< ScalarT > s) |
Matrix self multiply a complex number. | |
template<int AP_W> | |
Mat & | mul (ap_int< AP_W > s) |
Matrix self multiply ap_int integer. | |
template<int AP_W, int AP_I, ap_q_mode AP_Q, ap_o_mode AP_O, int AP_N> | |
Mat & | mul (ap_fixed< AP_W, AP_I, AP_Q, AP_O, AP_N > s) |
Matrix self multiply ap_fixed float. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(!(std::is_same< T1, bool >::value) &&!(std::is_same< T2, bool >::value)) &&((type1==MatType::NORMAL &&type2==MatType::NORMAL)||(type1==MatType::NORMAL &&type2==MatType::SYM)||(type1==MatType::SYM &&type2==MatType::NORMAL)||(type1==MatType::SYM &&type2==MatType::SYM)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
General matrix matrix multiplication.(Including SYM or NORMAL matrix times a SYM or NORMAL matrix ) | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type1==MatType::NORMAL||type1==MatType::SYM) &&type2==MatType::ASYM), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Normal matrix or symmetric matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type1==MatType::NORMAL||type1==MatType::SYM) &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Normal matrix or symmetric matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type1==MatType::NORMAL||type1==MatType::SYM) &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Normal matrix or symmetric matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type1==MatType::NORMAL||type1==MatType::SYM) &&type2==MatType::UPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Normal matrix or symmetric matrix times a upper triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type1==MatType::NORMAL||type1==MatType::SYM) &&type2==MatType::LOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Normal matrix or symmetric matrix times a lower triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type1==MatType::NORMAL||type1==MatType::SYM) &&type2==MatType::SUPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Normal matrix or symmetric matrix times a strict upper triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type1==MatType::NORMAL||type1==MatType::SYM) &&type2==MatType::SLOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Normal matrix or symmetric matrix times a strict lower triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&type2==MatType::UPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times a upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&type2==MatType::LOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times a lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&type2==MatType::SUPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times a strict upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&type2==MatType::SLOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times a strict lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&(type2==MatType::NORMAL||type2==MatType::SYM)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times a normal matrix or a symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::DIAGONAL &&type2==MatType::ASYM), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Diagonal matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SCALAR &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SCALAR &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type2==MatType::UPPER &&type1==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times a upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type2==MatType::LOWER &&type1==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times a lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type2==MatType::SUPPER &&type1==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times a strict upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type2==MatType::SLOWER &&type1==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times a strict lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type2==MatType::ASYM &&type1==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<((type2==MatType::SYM||type2==NORMAL) &&type1==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Scalar matrix times a normal matrix or a symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&type2==MatType::UPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times a upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&type2==MatType::LOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times a lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&type2==MatType::SUPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times a strict upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&type2==MatType::SLOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times a strict lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&type2==MatType::ASYM), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::UPPER &&(type2==MatType::SYM||type2==MatType::NORMAL)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Upper triangle matrix times a normal matrix or a symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&type2==MatType::UPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times a upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&type2==MatType::LOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times a lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&type2==MatType::SUPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times a strict upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&type2==MatType::SLOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times a strict lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&type2==MatType::ASYM), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::LOWER &&(type2==MatType::SYM||type2==MatType::NORMAL)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Lower triangle matrix times a normal matrix or a symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SUPPER &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SUPPER &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SUPPER &&type2==MatType::UPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle matrix times a upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SUPPER &&type2==MatType::LOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle matrix times a lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SUPPER &&type2==MatType::SUPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle matrix times a strict upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<!(type1==MatType::SUPPER &&n_rows==1) &&!(type2==MatType::SLOWER &&cols_==1) &&(type1==MatType::SUPPER &&type2==MatType::SLOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle times a strict lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SUPPER &&type2==MatType::ASYM), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SUPPER &&(type2==MatType::SYM||type2==MatType::NORMAL)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict upper triangle matrix times a normal matrix or a symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&type2==MatType::UPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times a upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&type2==MatType::LOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times a lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&type2==MatType::SUPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times a strict upper triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&type2==MatType::SLOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times a strict lower triangle matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&type2==MatType::ASYM), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::SLOWER &&(type2==MatType::SYM||type2==MatType::NORMAL)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Strict lower triangle matrix times a normal matrix or a symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&type2==MatType::DIAGONAL), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric matrix times a diagonal matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&type2==MatType::SCALAR), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric matrix times a scalar matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&type2==MatType::UPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric times a upper triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&type2==MatType::LOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric matrix times a lower triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&type2==MatType::SUPPER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric matrix times a strict upper triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&type2==MatType::SLOWER), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric matrix times a strict lower triangular matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&(type2==MatType::NORMAL||type2==MatType::SYM)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric matrix times a normal matrix or a symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(type1==MatType::ASYM &&type2==MatType::ASYM), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Anti-symmetric matrix times an anti-symmetric matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(std::is_same< T1, bool >::value) &&((type1==MatType::NORMAL &&type2==MatType::NORMAL)||(type1==MatType::NORMAL &&type2==MatType::SYM)||(type1==MatType::SYM &&type2==MatType::NORMAL)||(type1==MatType::SYM &&type2==MatType::SYM)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Bool matrix times a matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t rows_, size_t cols_, size_t comm, std::enable_if_t<(std::is_same< T2, bool >::value &&!std::is_same< T1, bool >::value) &&((type1==MatType::NORMAL &&type2==MatType::NORMAL)||(type1==MatType::NORMAL &&type2==MatType::SYM)||(type1==MatType::SYM &&type2==MatType::NORMAL)||(type1==MatType::SYM &&type2==MatType::SYM)), bool > = true> | |
Mat & | mul (const M1< T1, rows_, comm, type1, _unused1... > &mat_L, const M2< T2, comm, cols_, type2, _unused2... > &mat_R) |
Matrix times a bool matrix. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , size_t rows_, size_t cols_, MatType type1, MatType type2, std::enable_if_t< rows_==n_rows &&cols_==n_cols &&type1==type &&type2==type, bool > = true> | |
Mat & | emul (const M1< T1, rows_, cols_, type1, _unused1... > &mat_L, const M2< T2, rows_, cols_, type2, _unused2... > &mat_R) |
Element-wise product of two matrices. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2, size_t rows_, size_t cols_> | |
Mat & | col (const M< T2, rows_, cols_, type2, _unused... > &mat, size_t c) |
Take a column of a matrix by index. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2, size_t rows_, size_t cols_> | |
void | col (size_t c, const M< T2, rows_, cols_, type2, _unused... > &mat) |
Mat< T, n_rows, 1, MatType::NORMAL > | col (size_t c) const |
Take a column of a matrix by index and make a copy. | |
MatViewCol< T, n_rows, n_cols, MatType::NORMAL, MType< type > > | col_ (size_t index) const |
Take a column of a matrix by index as a read only view. | |
MatRefCol< T, n_rows, n_cols, MatType::NORMAL, MType< type > > | col_ (size_t index) |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2, size_t rows_, size_t cols_> | |
Mat & | row (const M< T2, rows_, cols_, type2, _unused... > &mat, size_t r) |
Take a row of a matrix by index. | |
Mat< T, 1, n_cols, MatType::NORMAL > | row (size_t r) const |
Take a row of a matrix by index and make a copy. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2, size_t rows_, size_t cols_> | |
Mat & | cols (const M< T2, rows_, cols_, type2, _unused... > &mat, size_t first_col) |
Take a row of a matrix by index as a read only view. | |
template<size_t _cols> | |
Mat< T, n_rows, _cols, MatType::NORMAL > | cols (size_t first_col) |
Take successive columns of a matrix by index and make a copy. | |
template<size_t first_col, size_t last_col> | |
MatViewCols< first_col, last_col, T, n_rows, n_cols, MatType::NORMAL, MType< type > > | Cols_ () const |
Take seccessive columns of a matrix by indexes as a read only view. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2, size_t rows_, size_t cols_> | |
Mat & | rows (const M< T2, rows_, cols_, type2, _unused... > &mat, size_t first_row) |
Take successive rows of a matrix by index. | |
template<size_t _rows> | |
Mat< T, _rows, n_cols, MatType::NORMAL > | rows (size_t first_row) |
Take successive rows of a matrix by index and make a copy. | |
template<size_t first_row, size_t last_row> | |
MatViewRows< first_row, last_row, T, n_rows, n_cols, MatType::NORMAL, MType< type > > | Rows_ () const |
Take successive rows of a matrix by indexes as a read only view. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, typename M2 , typename T1 , MatType type1, size_t rows_, size_t cols_> | |
Mat & | rows (const M1< T1, rows_, cols_, type1, _unused1... > &mat, M2 vector) |
Take discrete rows of a matrix by container. | |
template<size_t _rows, typename M2 > | |
Mat< T, _rows, n_cols, MatType::NORMAL > | rows (M2 vector) |
Take discrete rows of a matrix by container and make a copy. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, typename M2 , typename T1 , MatType type1, size_t rows_, size_t cols_> | |
Mat & | cols (const M1< T1, rows_, cols_, type1, _unused1... > &mat, M2 vector) |
Take discrete cols of a matrix by container. | |
template<size_t _cols, typename M2 > | |
Mat< T, n_rows, _cols, MatType::NORMAL > | cols (M2 vector) |
Take discrete cols of a matrix by container and make a copy. | |
Mat & | abs_ () |
Apply 'abs' (absolute value) to itself. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | t (const M< T2, n_cols, n_rows, type2, _unused... > &mat) |
Transpose. | |
template<typename... _unused, MatType _type = type, typename std::enable_if_t< _type==MatType::NORMAL, bool > = true> | |
Mat< T, n_cols, n_rows, type > | t () const |
Transpose NORMAL matrix as a copy. | |
template<typename... _unused, MatType _type = type, typename std::enable_if_t<(_type==MatType::DIAGONAL||_type==MatType::SCALAR||_type==MatType::SYM), bool > = true> | |
Mat | t () const |
Transpose DIAGONAL/SCALAR/SYM matrix as a copy. | |
template<typename... _unused, MatType _type = type, typename std::enable_if_t< _type==MatType::UPPER, bool > = true> | |
Mat< T, n_rows, n_cols, MatType::LOWER > | t () const |
Transpose UPPER matrix as a copy. | |
template<typename... _unused, MatType _type = type, typename std::enable_if_t< _type==MatType::LOWER, bool > = true> | |
Mat< T, n_rows, n_cols, MatType::UPPER > | t () const |
Transpose LOWER matrix as a copy. | |
template<typename... _unused, MatType _type = type, typename std::enable_if_t< _type==MatType::SUPPER, bool > = true> | |
Mat< T, n_rows, n_cols, MatType::SLOWER > | t () const |
Transpose SUPPER matrix as a copy. | |
template<typename... _unused, MatType _type = type, typename std::enable_if_t< _type==MatType::SLOWER, bool > = true> | |
Mat< T, n_rows, n_cols, MatType::SLOWER > | t () const |
Transpose SLOWER matrix as a copy. | |
template<typename... _unused, MatType _type = type, typename std::enable_if_t< _type==MatType::ASYM, bool > = true> | |
Mat | t () const |
Transpose ASYM matrix as a copy. | |
MatViewT< T, n_cols, n_rows, tType(type)> | t_ () |
Transpose as a read only view. | |
MatViewT< T, n_cols, n_rows, tType(type)> | t_ () const |
Mat & | tSelf () |
In-place transpose. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 > | |
Mat & | opp (const M< T2, n_rows, n_cols, type, _unused... > &mat) |
Calculate the opposite of a matrix. | |
Mat | opp () const |
Calculate the opposite of a matrix and make a copy. | |
MatViewOpp< T, n_rows, n_cols, type > | opp_ () const |
Matrix opposite as a read only view. | |
Mat & | oppSelf () |
In-place matrix opposite. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | diagMat (const M< T2, n_rows, n_cols, type2, _unused... > &mat) |
Take the diagonal of a matrix. | |
Mat< T, n_rows, n_cols, MatType::DIAGONAL > | diagMat () const |
Take the diagonal of a matrix and make a copy. | |
MatViewDiagMat< T, n_rows, n_cols, MatType::DIAGONAL, MType< type > > | diagMat_ () const |
Take the diagonal of a matrix as a read only view. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | diagVec (const M< T2, n_rows, n_rows, type2, _unused... > &mat) |
Take the diagonal vector of a matrix. | |
Vec< T, n_rows > | diagVec () const |
Take the diagonal vector of a matrix and make a copy. | |
MatViewDiagVec< T, n_rows, 1, MatType::NORMAL, MType< type > > | diagVec_ () const |
Take the diagonal vector of a matrix as a read only view. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | diagRowVec (const M< T2, n_cols, n_cols, type2, _unused... > &mat) |
Take the diagonal row vector of a matrix. | |
RowVec< T, n_cols > | diagRowVec () const |
Take the diagonal row vector of a matrix and make a copy. | |
MatViewDiagRowVec< T, 1, n_cols, MatType::NORMAL, MType< type > > | diagRowVec_ () const |
Take the diagonal row vector of a matrix as a read only view. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | offDiag (const M< T2, n_cols, n_rows, type2, _unused... > &mat) |
Take the off diagonal of a matrix. | |
Mat< T, n_rows, n_cols, MatType::NORMAL > | offDiag () const |
Take the off diagonal of a matrix and make a copy. | |
MatViewOffDiag< T, n_rows, n_cols, MatType::NORMAL, MType< type > > | offDiag_ () const |
Take the diagonal of a matrix as a read only view. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | invDiag (const M< T2, n_cols, n_rows, type2, _unused... > &mat) |
Inverse the diagonal matrix. | |
Mat | invDiag () const |
Inverse the diagonal matrix and makes a copy. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2> | |
Mat & | invNSA (const M< T2, n_rows, n_cols, type2, _unused... > &mat, size_t iter=4) |
Matrix inverse using Newton-Schulz iterative method (NSA). | |
Mat | invNSA (size_t iter=4) const |
Matrix inverse using Newton-Schulz iterative method (NSA) as a copy. | |
template<template< class, size_t, size_t, MatType, class... > typename M, typename... _unused, typename T2 , MatType type2, typename coeff_type > | |
Mat & | invINSA (const M< T2, n_rows, n_cols, type2, _unused... > &mat, size_t iter=3, coeff_type beta=2) |
Matrix inverse using improved Newton-Schulz iterative method (INSA). | |
template<typename coeff_type > | |
Mat | invINSA (size_t iter=3, coeff_type beta=1.0) const |
Matrix inverse using improved Newton-Schulz iterative method (INSA) as a copy. | |
template<typename Tp = T> | |
Tp | power () const |
T | value () const |
Get the value from 1x1 matrix. | |
T & | value () |
Get the writeable value from 1x1 matrix. | |
void | print (const std::string &str="", std::ostream &os=std::cout) const |
Print the matrix. | |
MatView< T, n_rows, n_cols, type > | operator+ () const |
The unary plus operator. | |
MatViewOpp< T, n_rows, n_cols, type > | operator- () const |
The unary minus operator. | |
T * | rawDataPtr () |
Get the raw data array pointer. | |
const T * | rawDataPtr () const |
void | _tryAssign (size_t r, size_t c, T value) |
Try to assign a value to a specific position. | |
void | _tryAssignOutRange (size_t r, size_t c, T value) |
Try to assign a value to a specific position that may have out-of-range index. | |
void | _tryPlus (size_t r, size_t c, T value) |
Try to plus a value to a specific position. | |
template<typename Tmp , typename M , typename Comm , typename Zero > | |
void | _sa_read_first_col_L (size_t i, Tmp &tmp_L, const M &mat_L, size_t begin_shift, Comm __attribute__((unused)) _comm_foo, Zero zero) const |
Systolic array read the first column from the left matrix. | |
template<typename Tmp , typename M , typename Comm , typename Zero > | |
void | _sa_read_first_row_R (size_t i, Tmp &tmp_R, const M &mat_R, size_t begin_shift, Comm __attribute__((unused)) _comm_foo, Zero zero) const |
Systolic array read the first column from the right matrix. | |
template<typename T1 , typename T2 , typename HLSVec > | |
void | _sa_multiply (const T1 &tmp_L, const T2 &tmp_R, const HLSVec &use_assign) |
Systolic array multiplication. | |
template<template< class, size_t, size_t, MatType, class... > typename M1, typename... _unused1, template< class, size_t, size_t, MatType, class... > typename M2, typename... _unused2, typename T1 , typename T2 , MatType type1, MatType type2, size_t comm> | |
Mat & | _systolicArrayMul (const M1< T1, n_rows, comm, type1, _unused1... > &mat_L, const M2< T2, comm, n_cols, type2, _unused2... > &mat_R, size_t begin_shift=0, size_t end_shift=0) |
The systolic array multiplication. | |
Static Public Member Functions | |
static constexpr size_t | size () noexcept |
Get the matrix size of storage. | |
Public Attributes | |
T | _data [type==MatType::NORMAL ? n_rows *n_cols :type==MatType::DIAGONAL ? n_rows :type==MatType::SCALAR ? 1 :type==MatType::SUPPER ?(n_rows - 1) *n_rows/2 :type==MatType::SLOWER ?(n_rows - 1) *n_rows/2 :type==MatType::ASYM ?(n_rows - 1) *n_rows/2 :(1+n_rows) *n_rows/2] |
The raw data array in row major. | |
Friends | |
class | MatView< T, n_rows, n_cols, type > |
class | MatViewOpp< T, n_rows, n_cols, type > |
class | MatViewT< T, n_cols, n_rows, type > |
class | MatViewT< T, n_rows, n_cols, type > |
template<typename View_T , size_t View_N, size_t View_N_, MatType View_type, typename type_parent > | |
class | MatViewDiagMat |
template<typename View_T , size_t View_N, size_t View_N_, MatType View_type, typename type_parent > | |
class | MatViewDiagVec |
template<typename View_T , size_t View_N, size_t View_N_, MatType View_type, typename type_parent > | |
class | MatViewDiagRowVec |
template<typename View_T , size_t View_N, size_t View_N_, MatType View_type, typename type_parent > | |
class | MatViewOffDiag |
template<typename View_T , size_t View_n_rows, size_t View_n_cols, MatType View_type, typename type_parent > | |
class | MatViewCol |
template<typename View_T , size_t View_n_rows, size_t View_n_cols, MatType View_type, typename type_parent > | |
class | MatViewRow |
template<size_t first_col, size_t last_col, typename View_T , size_t View_n_rows, size_t View_n_cols, MatType View_type, typename type_parent > | |
class | MatViewCols |
template<size_t first_row, size_t last_row, typename View_T , size_t View_n_rows, size_t View_n_cols, MatType View_type, typename type_parent > | |
class | MatViewRows |
template<typename View_T_T , size_t T_n_rows, size_t T_n_cols, size_t T_n_slices, MatType T_type> | |
class | Tensor |
Matrix.
The matrix design is hardware optimized, with easy pragma configuration to be specified by the user. The use of this class follows the routine of C++, with some exceptions for the sake of better hardware performance. Please check out descriptions of class member functions for details.
T | Element type. |
n_rows | Number of rows. |
n_cols | Number of columns. |
type | matrix type. |
using flames::Mat< T, n_rows, n_cols, type >::element_type = T |
using flames::Mat< T, n_rows, n_cols, type >::value_type = T |
|
inline |
Construct a new Mat object.
This is the default constructor. You can set the array partition using macro FLAMES_MAT_PARTITION_COMPLETE
to set a complete array partition and FLAMES_MAT_PARTITION_FACTOR
to set a block partition with the specific factor.
|
inline |
Construct a new Mat object with initial value.
All values are set to the initial value you specify. You can configure macro FLAMES_MAT_SET_VALUE_UNROLL_FACTOR
to set the initialization unroll factor.
val | The initial value. |
|
inline |
Copy constructor from a Mat object.
Macro FLAMES_MAT_COPY_UNROLL_FACTOR
to configure the unrolling factor. You can set the array partition using macro FLAMES_MAT_PARTITION_COMPLETE
to set a complete array partition and FLAMES_MAT_PARTITION_FACTOR
to set a block partition with the specific factor.
mat | The matrix to be copied. |
|
inline |
|
inline |
|
inline |
Construct a new Mat object from std::vector.
vec | The std::vector storing data in row major. |
You can set the array partition using macro FLAMES_MAT_PARTITION_COMPLETE
to set a complete array partition and FLAMES_MAT_PARTITION_FACTOR
to set a block partition with the specific factor.
|
inline |
|
inline |
|
inlineexplicit |
Construct a new Mat object from raw data pointer.
ptr | The raw data pointer. |
opt | Option if initialization. |
|
inlineexplicit |
|
inline |
Destroy the Mat object.
So far there is nothing to do.
|
inline |
Systolic array multiplication.
T1 | The left matrix element type. |
T2 | The right matrix element type. |
HLSVec | The HLS vector type for control whether assigning or adding. |
tmp_L | The left tmp matrix. |
tmp_R | The right tmp matrix. |
use_assign | The HLS vector for controlling whether assigning or adding. |
|
inline |
Systolic array read the first column from the left matrix.
Tmp | The temp mat type. |
M | The left matrix type. |
Comm | The |
Zero |
i | The iteration number. |
tmp_L | The temp matrix. |
mat_L | The left matrix. |
begin_shift | The begin shift value. |
zero | The zero value. |
|
inline |
Systolic array read the first column from the right matrix.
Tmp | The temp mat type. |
M | The right matrix type. |
Comm | The common size (column number of the left matrix and the row number of the right matrix) as a type. |
Zero | The zero element type. |
i | The iteration number. |
tmp_L | The temp matrix. |
mat_L | The right matrix. |
begin_shift | The begin shift value. |
zero | The zero value. |
|
inline |
The systolic array multiplication.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
comm | The common size (column number of the left matrix and the row number of the right matrix) as a type. |
mat_L | The left matrix. |
mat_R | The right matrix. |
begin_shift | The begin shift value. |
end_shift | The end shift value. |
|
inline |
Try to assign a value to a specific position.
This is useful when we do not want to check the MatType.
r | The row index. |
c | The column index. |
value | The value to be assigned. |
|
inline |
Try to assign a value to a specific position that may have out-of-range index.
This is useful when we do not want to check the MatType and the index range.
r | The row index. |
c | The column index. |
value | The value to be assigned. |
|
inline |
Try to plus a value to a specific position.
This is useful when we do not want to check the MatType.
r | The row index. |
c | The column index. |
value | The value to add. |
|
inline |
Apply 'abs' (absolute value) to itself.
|
inline |
Matrix plus matrix with same MatType.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into NORMAL.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into DIAGONAL.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into SCALAR.
The result is stored to 'this'.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into UPPER.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into LOWER.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into SUPPER.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into SLOWER.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into SYM.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix plus matrix into ASYM.
The result is stored to 'this'. You may configure FLAMES_MAT_PLUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing addition in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix self plus a matrix.
M | The matrix type of the plus matrix. |
_unused | (unused) |
T2 | The plus matrix element type. |
type2 | The plus matrix MatType. |
mat_R | The plus matrix. |
|
inline |
Take a column of a matrix by index.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
mat | The original matrix. |
c | The column index. |
|
inline |
Take a column of a matrix by index and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
c | The column index. |
|
inline |
|
inline |
|
inline |
Take a column of a matrix by index as a read only view.
|
inline |
Take discrete cols of a matrix by container.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M1 | The original matrix type. |
_unused1 | (unused) |
M2 | The vector type. |
T1 | The original matrix element type. |
type1 | The matrix MatType. |
rows_ | The row number of the matrix. |
cols_ | The column number of the matrix. |
mat | The original matrix. |
vector | The vector. |
|
inline |
Take a row of a matrix by index as a read only view.
Take successive columns of a matrix by index.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
type2 | The matrix MatType. |
mat | The original matrix. |
first_col | The first column index. |
|
inline |
Take discrete cols of a matrix by container and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M2 | The vector type. |
vector | The vector. |
|
inline |
Take successive columns of a matrix by index and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
_cols | The number of columns taken. |
first_col | The first column index. |
|
inline |
Take seccessive columns of a matrix by indexes as a read only view.
|
inline |
Take the diagonal of a matrix and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
|
inline |
Take the diagonal of a matrix.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
mat | The original matrix. |
|
inline |
Take the diagonal of a matrix as a read only view.
|
inline |
Take the diagonal row vector of a matrix and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
|
inline |
Take the diagonal row vector of a matrix.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
mat | The original matrix. |
|
inline |
Take the diagonal row vector of a matrix as a read only view.
|
inline |
Take the diagonal vector of a matrix and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
|
inline |
Take the diagonal vector of a matrix.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
mat | The original matrix. |
|
inline |
Take the diagonal vector of a matrix as a read only view.
|
inline |
Element-wise product of two matrices.
You can configure the macro FLAMES_MAT_EMUL_UNROLL_FACTOR
to determine the parallelism.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
rows_ | The number of rows. |
cols_ | The number of columns. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Inverse the diagonal matrix and makes a copy.
|
inline |
Inverse the diagonal matrix.
This can also be used for calculating the inverse of the diagonal part.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
type2 | The original matrix MatType. |
mat | The original matrix. |
|
inline |
Matrix inverse using improved Newton-Schulz iterative method (INSA).
This implements a coefficient to the original NSA method to accelerate convergence.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
type2 | The original matrix MatType. |
coeff_type | The coefficient data type. |
mat | The original matrix. |
iter | The number of iterations (default as 3). |
beta | The coefficient applied to each iteration (default as 2). |
|
inline |
Matrix inverse using improved Newton-Schulz iterative method (INSA) as a copy.
coeff_type | The coefficient data type. |
iter | The number of iterations (default as 3). |
beta | The coefficient applied to each iteration (default as 2). |
|
inline |
Matrix inverse using Newton-Schulz iterative method (NSA).
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
type2 | The original matrix MatType. |
mat | The original matrix. |
iter | The number of iterations (default as 4). |
|
inline |
Matrix inverse using Newton-Schulz iterative method (NSA) as a copy.
iter | The number of iterations (default as 4). |
|
inline |
Matrix self multiply ap_fixed float.
The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
AP_W | ap_int W param. |
AP_I | ap_int I param. |
AP_Q | ap_int Q param. |
AP_O | ap_int O param. |
AP_N | ap_int N param. |
s | The float. |
|
inline |
Matrix self multiply ap_int integer.
The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
AP_W | ap_int W param. |
s | The integer. |
|
inline |
General matrix matrix multiplication.(Including SYM or NORMAL matrix times a SYM or NORMAL matrix )
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel. (This is implemented of using systolic array.)
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Normal matrix or symmetric matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
comm | The column number of the right matrix (should be the same as n_cols of 'this'). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Normal matrix or symmetric matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Normal matrix or symmetric matrix times a scalar matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Normal matrix or symmetric matrix times a upper triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Normal matrix or symmetric matrix times a lower triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Normal matrix or symmetric matrix times a strict upper triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Normal matrix or symmetric matrix times a strict lower triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times a scalar matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times a upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times a lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times a strict upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times a strict lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times a normal matrix or a symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Diagonal matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times a scalar matrix.
The result is stored to 'this'.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times a upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times a lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times a strict upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times a strict lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Scalar matrix times a normal matrix or a symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times a scalar matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times a upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times a lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times a strict upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times a strict lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Upper triangle matrix times a normal matrix or a symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times a scalar matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times a upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times a lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times a strict upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type.bb |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times a strict lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Lower triangle matrix times a normal matrix or a symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle matrix times a scalar matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle matrix times a upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle matrix times a lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle matrix times a strict upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle times a strict lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict upper triangle matrix times a normal matrix or a symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times a scalar matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times a upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times a lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times a strict upper triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type.bb |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times a strict lower triangle matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Strict lower triangle matrix times a normal matrix or a symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric matrix times a diagonal matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric matrix times a scalar matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric times a upper triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric matrix times a lower triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric matrix times a strict upper triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric matrix times a strict lower triangular matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric matrix times a normal matrix or a symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel. (This is implemented of using systolic array.)
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Anti-symmetric matrix times an anti-symmetric matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
comm | The column number of the right matrix (should be the same as n_cols of 'this'). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Bool matrix times a matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel. (This is implemented of using systolic array.)
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type (should be bool). |
T2 | The right matrix element type. |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix times a bool matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel. (This is implemented of using systolic array.)
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type . |
T2 | The right matrix element type (should be bool). |
type1 | The left matrix MatType. |
type2 | The right matrix MatType. |
rows_ | The row number of the left matrix (should be the same as rows of 'this'). |
cols_ | The column number of the right matrix (should be the same as n_cols of 'this'). |
comm | The common number (the column number of the left matrix and the row number of the right matrix). |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix times ap_fixed float.
The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M | The matrix type. |
_unused | (unused) |
AP_W | ap_fixed W param. |
AP_I | ap_fixed I param. |
AP_Q | ap_fixed Q param. |
AP_O | ap_fixed O param. |
AP_N | ap_fixed N param. |
T2 | The matrix element type. |
mat | The matrix. |
s | The float. |
|
inline |
Matrix times ap_int integer.
The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M | The matrix type. |
_unused | (unused) |
AP_W | ap_int W param. |
T2 | The matrix element type. |
mat | The matrix. |
s | The integer. |
|
inline |
Matrix times a scalar.
This scalar is C++ arithmetic types, like double and int. The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M | The matrix type. |
_unused | (unused) |
ScalarT | The scalar type. |
T2 | The matrix element type. |
mat | The matrix. |
s | The scalar.(The scalar here is a number. NOT the SCALAR which is a square matrix,despite their functions are similar) |
|
inline |
Matrix times a complex number.
This scalar is std::complex. The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
M | The matrix type. |
_unused | (unused) |
ScalarT | The scalar type. |
T2 | The matrix element type. |
mat | The matrix. |
s | The complex number. |
|
inline |
Matrix self multiply a scalar.
This scalar is C++ arithmetic types, like double and int. The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
ScalarT | The scalar type. |
s | The scalar. |
|
inline |
Matrix self multiply a complex number.
The result is stored to 'this'. You may configure FLAMES_MAT_SCALAR_TIMES_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing multiplication in parallel.
ScalarT | The scalar type. |
s | The complex number. |
|
inline |
Take the off diagonal of a matrix and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
|
inline |
Take the off diagonal of a matrix.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
mat | The original matrix. |
|
inline |
Take the diagonal of a matrix as a read only view.
|
inline |
Get writeable data element by row index and column index.
r | The row index (starting from 0). |
c | The column index (staring from 0). |
|
inline |
Get read only data element by row index and column index.
r | The row index (starting from 0). |
c | The column index (staring from 0). |
|
inline |
The unary plus operator.
|
inline |
The unary minus operator.
This is the same as .opp_().
|
inline |
Get writeable element by row major index from the data array.
If you are not sure which index it is operator() which takes tow index and column index is a better resort.
index | The data array index in row major. |
|
inline |
Get read only element by row major index from the data array.
If you are not sure which index it is operator() which takes tow index and column index is a better resort.
index | The data array index in row major. |
|
inline |
Calculate the opposite of a matrix and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
|
inline |
Calculate the opposite of a matrix.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
mat | The original matrix. |
|
inline |
Matrix opposite as a read only view.
|
inline |
In-place matrix opposite.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
|
inline |
|
inline |
Print the matrix.
str | The string to print before the matrix. |
os | The out stream (default as std::cout). |
|
inline |
Get the raw data array pointer.
This operation is dangerous if you are not aware of what you are doing so this function is marked as private.
|
inline |
|
inline |
|
inline |
Take a row of a matrix by index.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
type2 | The matrix MatType. |
mat | The original matrix. |
r | The row index. |
|
inline |
Take a row of a matrix by index and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
r | The row index. |
|
inline |
Take discrete rows of a matrix by container.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M1 | The original matrix type. |
_unused1 | (unused) |
M2 | The vector type. |
T1 | The original matrix element type. |
type1 | The matrix MatType. |
rows_ | The row number of the matrix. |
cols_ | The column number of the matrix. |
mat | The original matrix. |
vector | The vector. |
|
inline |
Take successive rows of a matrix by index.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M | The original matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
type2 | The matrix MatType. |
mat | The original matrix. |
first_row | The first row index. |
|
inline |
Take discrete rows of a matrix by container and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
M2 | The vector type. |
vector | The vector. |
|
inline |
Take successive rows of a matrix by index and make a copy.
You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
The result is stored to 'this'. You may configure macro FLAMES_MAT_COPY_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do the operation in parallel.
_rows | The number of columns taken. |
first_row | The first row index. |
|
inline |
Take successive rows of a matrix by indexes as a read only view.
|
inline |
Set all elements of the matrix to a value.
val | The value. |
|
inline |
Set all elements of the matrix to zero.
|
inlinestaticconstexprnoexcept |
Get the matrix size of storage.
This is useful in that matrices of different MatType has the data array of different sizes.
|
inline |
Matrix minus matrix with same MatType.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into NORMAL.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into DIAGONAL.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into SCALAR.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into UPPER.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into LOWER.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into SUPPER.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into SLOWER.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into SYM.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix minus matrix into ASYM.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M1 | The left matrix type. |
_unused1 | (unused) |
M2 | The right matrix type. |
_unused2 | (unused) |
T1 | The left matrix element type. |
T2 | The right matrix element type. |
type1 | The left matrix matrix MatType. |
type2 | The right matrix matrix MatType. |
mat_L | The left matrix. |
mat_R | The right matrix. |
|
inline |
Matrix self minus a matrix.
The result is stored to 'this'. You may configure FLAMES_MAT_MINUS_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to doing subtraction in parallel.
M | The matrix type of the minus matrix. |
_unused | (unused) |
T2 | The minus matrix type. |
type2 | The minus matrix MatType. |
mat_R | The minus matrix. |
|
inline |
Transpose NORMAL matrix as a copy.
You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
|
inline |
Transpose DIAGONAL/SCALAR/SYM matrix as a copy.
This is actually *this (i.e. the trapsonse is the same as itself).
|
inline |
Transpose UPPER matrix as a copy.
You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
|
inline |
Transpose LOWER matrix as a copy.
You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
|
inline |
Transpose SUPPER matrix as a copy.
You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
|
inline |
Transpose SLOWER matrix as a copy.
You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
|
inline |
Transpose ASYM matrix as a copy.
You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
|
inline |
Transpose.
The result is stored to 'this'. You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
M | The matrix type. |
_unused | (unused) |
T2 | The original matrix element type. |
type2 | The original matrix MatType. |
mat | The original matrix. |
|
inline |
Transpose as a read only view.
|
inline |
|
inline |
In-place transpose.
The result is stored to 'this'. You may configure macro FLAMES_MAT_TRANSPOSE_UNROLL_FACTOR
or FLAMES_UNROLL_FACTOR
to do transpose in parallel.
|
inline |
Get the writeable value from 1x1 matrix.
|
inline |
Get the value from 1x1 matrix.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
T flames::Mat< T, n_rows, n_cols, type >::_data[type==MatType::NORMAL ? n_rows *n_cols :type==MatType::DIAGONAL ? n_rows :type==MatType::SCALAR ? 1 :type==MatType::SUPPER ?(n_rows - 1) *n_rows/2 :type==MatType::SLOWER ?(n_rows - 1) *n_rows/2 :type==MatType::ASYM ?(n_rows - 1) *n_rows/2 :(1+n_rows) *n_rows/2] |
The raw data array in row major.
You can set the array partition using macro FLAMES_MAT_PARTITION_COMPLETE
to set a complete array partition and FLAMES_MAT_PARTITION_FACTOR
to set a block partition with the specific factor.