orocos / orocos-bayesian-filtering

The orocos Bayesian Filtering Library
148 stars 59 forks source link

Matrix * SymmetricMatrix not defined for boost matrix wrapper #14

Open toeklk opened 6 years ago

toeklk commented 6 years ago

migrated from Bugzilla #445 status NEW severity normal in component wrappers for 0.7.0 Reported in version trunk on platform All Assigned to: BFL mailinglist

On 2007-08-10 10:25:13 +0200, Tinne De Laet wrote:

  While extending the matrixwrapper test I noticed that although the product of a matrix with a symmetric matrix is not implemented (as far as I can see), the call doesn't result in an error during compilation nor execution when using LTI The test I used is: Matrix Csm_test = Am * As; where Am is a Matrix and As a SymmetricMatrix. The error I got during compilation with BOOST is: _________________________________________________ /home/fiep/bfl/tests/matrixwrapper_test.cpp: In member function ‘void MatrixwrapperTest::testMatrixwrapperValue()’: /home/fiep/bfl/tests/matrixwrapper_test.cpp:406: error: ambiguous overload for ‘operator*’ in ‘Am * As’ /usr/include/boost/numeric/ublas/matrix_expression.hpp:3228: note: candidates are: typename boost::numeric::ublas::matrix_binary_scalar2_traits(E1, const T2, boost::numeric::ublas::scalar_multiplies(typename E1::value_type, T2) )::result_type boost::numeric::ublas::operator*(const boost::numeric::ublas::matrix_expression(E)ampersand, const T2ampersand) [with E1 = boost::numeric::ublas::matrix(double, boost::numeric::ublas::basic_row_major(unsigned int, int), boost::numeric::ublas::unbounded_array(double, std::allocator(double) ) ), T2 = MatrixWrapper::SymmetricMatrix] /usr/include/boost/numeric/ublas/matrix_expression.hpp:2803: note: typename boost::numeric::ublas::matrix_binary_scalar1_traits(const T1, E2, boost::numeric::ublas::scalar_multiplies(T1, typename E2::value_type) )::result_type boost::numeric::ublas::operator*(const T1ampersand, const boost::numeric::ublas::matrix_expression(E2)ampersand) [with T1 = MatrixWrapper::Matrix, E2 = boost::numeric::ublas::symmetric_matrix(double, boost::numeric::ublas::basic_lower(unsigned int), boost::numeric::ublas::basic_row_major(unsigned int, int), boost::numeric::ublas::unbounded_array(double, std::allocator(double) ) )] make[2]: *** [tests/CMakeFiles/test_matrixwrapper.dir/matrixwrapper_test.o] Error 1 make[1]: *** [tests/CMakeFiles/test_matrixwrapper.dir/all] Error 2 make: *** [all] Error 2 _________________________________________________
toeklk commented 6 years ago

Cannot reproduce this with eigen, so it seems to be boost specific