Использование ускоренных аккумуляторов с типами Eigen :: Vector - PullRequest
0 голосов
/ 27 октября 2011

У меня проблемы с объединением типов Eigen::VectorXd с библиотекой аккумулятора Boost:

#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;
}

В моей системе это выдает:

4.41629e-39
0
2
6

Таким образом, хотя прямые вычисления хороши (собственные векторы поддерживают все обычные числовые операторы), накопительные бусты дают сбой во время выполнения без ошибки.

1 Ответ

1 голос
/ 27 октября 2011

Пользовательский тип должен специализироваться на std :: numeric_limits. см https://svn.boost.org/trac/boost/ticket/5491

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...