I have a problem with expression templates
George Slavov <[email protected]>
| Newsgroups | gmane.comp.lib.boost.ublas |
|---|---|
| Message-ID | <CALNdZVKZBJ9y0XLH8KKnQ_Yba4LX_tjxagOtE=E0S9gE8rmghQ@mail.gmail.com> |
I am using MSVC 2010 and trying to compile the following code
ublas::prod(trans(A), ublas::prod(B, A));
where A and B are matrices of the basic type ublas::matrix<double>. So the
product should equal A^T B A. However, I get a compile error on the static
assert line of the following
// Dispatcher
template<class E1, class E2>
BOOST_UBLAS_INLINE
typename matrix_matrix_binary_traits<typename E1::value_type, E1,
typename E2::value_type, E2>::result_type
prod (const matrix_expression<E1> &e1,
const matrix_expression<E2> &e2) {
BOOST_STATIC_ASSERT (E1::complexity == 0 && E2::complexity == 0);
typedef typename matrix_matrix_binary_traits<typename E1::value_type,
E1,
typename E2::value_type, E2>::storage_category storage_category;
typedef typename matrix_matrix_binary_traits<typename E1::value_type,
E1,
typename E2::value_type, E2>::orientation_category
orientation_category;
return prod (e1, e2, storage_category (), orientation_category ());
}
If I compute a temporary result, then I get no problems. Like so:
ublas::matrix<double> temp = ublas::prod(B,A);
ublas::prod(trans(A), temp);
I also tried a case where the expression template won't involve transposes
and I got the same problem. What am I doing wrong?
Regards,
George
_______________________________________________
ublas mailing list
[email protected]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [email protected]