Tiny Vector Matrix library using Expression Templates | Sourceforge Project Page |
#include <tvmet/xpr/MMProduct.h>
Inheritance diagram for tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >:
Using formula:
Public Types | |
enum | { ops_lhs = E1::ops, ops_rhs = E2::ops, M = Rows1 * Cols1 * Cols2, N = Rows1 * (Cols1 - 1) * Cols2, ops_plus = M * NumericTraits<value_type>::ops_plus, ops_muls = N * NumericTraits<value_type>::ops_muls, ops = ops_plus + ops_muls, use_meta = Rows1*Cols2 < TVMET_COMPLEXITY_MM_TRIGGER ? true : false } |
Complexity counter. More... | |
typedef PromoteTraits< typename E1::value_type, typename E2::value_type >::value_type | value_type |
Public Member Functions | |
XprMMProduct (const E1 &lhs, const E2 &rhs) | |
Constructor. | |
value_type | operator() (std::size_t i, std::size_t j) const |
index operator for arrays/matrices | |
void | print_xpr (std::ostream &os, std::size_t l=0) const |
Private Member Functions | |
XprMMProduct () | |
XprMMProduct & | operator= (const XprMMProduct &) |
Static Private Member Functions | |
static value_type | do_gemm (dispatch< true >, const E1 &lhs, const E2 &rhs, std::size_t i, std::size_t j) |
Wrapper for meta gemm. | |
static value_type | do_gemm (dispatch< false >, const E1 &lhs, const E2 &rhs, std::size_t i, std::size_t j) |
Wrapper for loop gemm. | |
Private Attributes | |
const E1 | m_lhs |
const E2 | m_rhs |
typedef PromoteTraits< typename E1::value_type, typename E2::value_type >::value_type tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::value_type |
anonymous enum |
tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::XprMMProduct | ( | ) | [private] |
tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::XprMMProduct | ( | const E1 & | lhs, | |
const E2 & | rhs | |||
) | [inline, explicit] |
Constructor.
XprMMProduct& tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::operator= | ( | const XprMMProduct< E1, Rows1, Cols1, E2, Cols2 > & | ) | [private] |
static value_type tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::do_gemm | ( | dispatch< true > | , | |
const E1 & | lhs, | |||
const E2 & | rhs, | |||
std::size_t | i, | |||
std::size_t | j | |||
) | [inline, static, private] |
Wrapper for meta gemm.
static value_type tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::do_gemm | ( | dispatch< false > | , | |
const E1 & | lhs, | |||
const E2 & | rhs, | |||
std::size_t | i, | |||
std::size_t | j | |||
) | [inline, static, private] |
Wrapper for loop gemm.
value_type tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::operator() | ( | std::size_t | i, | |
std::size_t | j | |||
) | const [inline] |
index operator for arrays/matrices
void tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::print_xpr | ( | std::ostream & | os, | |
std::size_t | l = 0 | |||
) | const [inline] |
const E1 tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::m_lhs [private] |
const E2 tvmet::XprMMProduct< E1, Rows1, Cols1, E2, Cols2 >::m_rhs [private] |
Author: |