Tiny Vector Matrix library using Expression Templates | Sourceforge Project Page |
#include <tvmet/xpr/MtMProduct.h>
Inheritance diagram for tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >:
using formula
Public Types | |
enum | { ops_lhs = E1::ops, ops_rhs = E2::ops, M = Rows1 * Cols1 * Cols2, N = (Rows1-1) * Cols1 * Cols2, ops_plus = M * NumericTraits<value_type>::ops_plus, ops_muls = N * NumericTraits<value_type>::ops_muls, ops = ops_plus + ops_muls, use_meta = Cols1*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 | |
XprMtMProduct (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 | |
XprMtMProduct () | |
XprMtMProduct & | operator= (const XprMtMProduct &) |
Static Private Member Functions | |
static value_type | do_gemtm (dispatch< true >, const E1 &lhs, const E2 &rhs, std::size_t i, std::size_t j) |
Wrapper for meta gemm. | |
static value_type | do_gemtm (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::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::value_type |
anonymous enum |
tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::XprMtMProduct | ( | ) | [private] |
tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::XprMtMProduct | ( | const E1 & | lhs, | |
const E2 & | rhs | |||
) | [inline, explicit] |
Constructor.
XprMtMProduct& tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::operator= | ( | const XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 > & | ) | [private] |
static value_type tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::do_gemtm | ( | 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::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::do_gemtm | ( | 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::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::operator() | ( | std::size_t | i, | |
std::size_t | j | |||
) | const [inline] |
index operator for arrays/matrices
void tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::print_xpr | ( | std::ostream & | os, | |
std::size_t | l = 0 | |||
) | const [inline] |
const E1 tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::m_lhs [private] |
const E2 tvmet::XprMtMProduct< E1, Rows1, Cols1, E2, Cols2 >::m_rhs [private] |
Author: |