assuming you want element wise multiplication of 2 vectors you would use the element_prod function. the * operator for vectors is meant for scalar/vector operations.

On Wed, Aug 5, 2009 at 10:52 AM, Mark Johnson <mj1@cog.brown.edu> wrote:
I'm trying to use the * operator on a pair of vectors, but it seems the vector * scalar and scalar * vector version of the operators also match.  Can anyone recommend a fix or a work-around?  I'm using the version of Boost that comes pre-installed on Fedora 11, which I think is 1.37.

Thanks in advance for your help,

Mark

Example:

#include <iostream>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_expression.hpp>

int main(int argc, char** argv) {
  boost::numeric::ublas::scalar_vector<double> v(2, 2);
  std::cout << "v = " << v*v << std::endl;
}


when compiled produces
g++ utmp.cc
utmp.cc: In function ‘int main(int, char**)’:
utmp.cc:8: error: ambiguous overload for ‘operator*’ in ‘v * v’
/usr/include/boost/numeric/ublas/vector_expression.hpp:1399: note: candidates are: typename boost::numeric::ublas::vector_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::vector_expression<E>&, const T2&) [with E1 = boost::numeric::ublas::vector<double, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, T2 = boost::numeric::ublas::vector<double, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >]
/usr/include/boost/numeric/ublas/vector_expression.hpp:1174: note:                 typename boost::numeric::ublas::vector_binary_scalar1_traits<const T1, E2, boost::numeric::ublas::scalar_multiplies<T1, typename E2::value_type> >::result_type boost::numeric::ublas::operator*(const T1&, const boost::numeric::ublas::vector_expression<E2>&) [with T1 = boost::numeric::ublas::vector<double, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, E2 = boost::numeric::ublas::vector<double, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >]



_______________________________________________
ublas mailing list
ublas@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: manning.jesse@gmail.com