Tiny Vector Matrix library using Expression Templates | Sourceforge Project Page |
#include <tvmet/xpr/MtVProduct.h>
Inheritance diagram for tvmet::XprMtVProduct< E1, Rows, Cols, E2 >:
.
Public Types | |
enum | { ops_lhs = E1::ops, ops_rhs = E2::ops, M = Cols * Rows, N = Cols * (Rows - 1), ops_plus = M * NumericTraits<value_type>::ops_plus, ops_muls = N * NumericTraits<value_type>::ops_muls, ops = ops_plus + ops_muls, use_meta = Rows*Cols < TVMET_COMPLEXITY_MV_TRIGGER ? true : false } |
Complexity counter. More... | |
typedef PromoteTraits< typename E1::value_type, typename E2::value_type >::value_type | value_type |
Public Member Functions | |
XprMtVProduct (const E1 &lhs, const E2 &rhs) | |
Constructor. | |
value_type | operator() (std::size_t j) const |
index operator, returns the expression by index. | |
void | print_xpr (std::ostream &os, std::size_t l=0) const |
Private Member Functions | |
XprMtVProduct () | |
XprMtVProduct & | operator= (const XprMtVProduct &) |
Static Private Member Functions | |
static value_type | do_gemtv (dispatch< true >, const E1 &lhs, const E2 &rhs, std::size_t i) |
Wrapper for meta gemm. | |
static value_type | do_gemtv (dispatch< false >, const E1 &lhs, const E2 &rhs, std::size_t i) |
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::XprMtVProduct< E1, Rows, Cols, E2 >::value_type |
anonymous enum |
tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::XprMtVProduct | ( | ) | [private] |
tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::XprMtVProduct | ( | const E1 & | lhs, | |
const E2 & | rhs | |||
) | [inline, explicit] |
Constructor.
XprMtVProduct& tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::operator= | ( | const XprMtVProduct< E1, Rows, Cols, E2 > & | ) | [private] |
static value_type tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::do_gemtv | ( | dispatch< true > | , | |
const E1 & | lhs, | |||
const E2 & | rhs, | |||
std::size_t | i | |||
) | [inline, static, private] |
Wrapper for meta gemm.
static value_type tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::do_gemtv | ( | dispatch< false > | , | |
const E1 & | lhs, | |||
const E2 & | rhs, | |||
std::size_t | i | |||
) | [inline, static, private] |
Wrapper for loop gemm.
value_type tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::operator() | ( | std::size_t | j | ) | const [inline] |
index operator, returns the expression by index.
This is the vector style since a matrix*vector gives a vector.
void tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::print_xpr | ( | std::ostream & | os, | |
std::size_t | l = 0 | |||
) | const [inline] |
const E1 tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::m_lhs [private] |
const E2 tvmet::XprMtVProduct< E1, Rows, Cols, E2 >::m_rhs [private] |
Author: |