How can I calculate a quadratic form using Boost UBLAS?

Grześ Andruszkiewicz <[email protected]>
Newsgroups gmane.comp.lib.boost.ublas
Message-ID <CACzszyGmQdPOY+rhNDQm_rYCWsE0H4tUBNbMOt6dmGCbSKUDiA@mail.gmail.com>
Hi,

I am completely new to uBlas, so probably my question will be rather basic.

I am trying to calculate (x-mu)^T*SigmaInverse*(x-mu) using Boost UBLAS,
where x and mu are vectors and SigmaInverse is a Matrix. The code looks
like this:

#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>

#include "matrixhelpers.h"

namespace ublas = boost::numeric::ublas;

class MultivariateNormalLogLikelihood
{
public:
  MultivariateNormalLogLikelihood(ublas::vector<double> &mu,
ublas::matrix<double> &sigma) : mu(mu)
  {
    invertMatrix<double>(sigma, sigmaInverse);
    constElement =
-std::log(2*M_PI)*0.5*mu.size()-0.5*std::log(determinant(sigma));
  }

  double operator()(ublas::vector<double> &x)
  {
    auto y = x-mu;
    double e = ublas::prod(ublas::prod(ublas::trans(y),sigmaInverse),y);
    return constElement-0.5*e;
  }
private:
  double constElement;
  ublas::matrix<double> sigmaInverse;
  ublas::vector<double> mu;
};

and I get this error:

/home/ga/PhD/cpp/grzesLib/multivariatenormalloglikelihood.h:23:71: error:
no matching function for call to
‘prod(boost::numeric::ublas::matrix_vector_binary2_traits<double,
boost::numeric::ublas::vector_unary<boost::numeric::ublas::vector_binary<boost::numeric::ublas::vector<double>,
boost::numeric::ublas::vector<double>,
boost::numeric::ublas::scalar_minus<double, double> >,
boost::numeric::ublas::scalar_identity<double> >, double,
boost::numeric::ublas::matrix<double> >::result_type,
boost::numeric::ublas::vector_binary<boost::numeric::ublas::vector<double>,
boost::numeric::ublas::vector<double>,
boost::numeric::ublas::scalar_minus<double, double> >&)’

What am I doing wrong and how can I get it to work?

Cheers,
Grzegorz

_______________________________________________
ublas mailing list
[email protected]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.