Question

I am having some problems combining Eigen::VectorXd types with the Boost accumulator library:

#include <iostream>
#include <Eigen/Core>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>

using namespace boost::accumulators;
using namespace Eigen;

int main()
{
   Vector2f a(1.0, 2.0), b(3.0, 10.0);

   accumulator_set<Vector2f, stats<tag::mean> > acc(Vector2f::Zero());

   acc(a);
   acc(b);

   std::cout << mean(acc) << std::endl;
   std::cout << ((a+b)/2.0) << std::endl;

   return 0;
}

On my system this produces:

4.41629e-39
0
2
6

So while direct computation is fine (Eigen vectors support all of the usual numerical operators) Boost accumulators fail at runtime without an error.

Was it helpful?

Solution

User defined type need specialize std::numeric_limits. see https://svn.boost.org/trac/boost/ticket/5491

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top