Проблема с бустом Ublas Matrix product - PullRequest
2 голосов
/ 02 мая 2011

Я пытаюсь использовать убластовую часть Boost, но по какой-то причине не могу умножить матрицы и присвоить результат другим матрицам.

Это работает:

#include <boost/numeric/ublas/symmetric.hpp>
#include <boost/numeric/ublas/io.hpp>

using namespace boost::numeric::ublas;

typedef symmetric_matrix<int,lower> symatrix;

int main() {
  int N = 10;
  symatrix foo(N,N);
  for (int i = 0; i < N; i++)
    for(int j = 0; j <= i; j++) {
      foo(i,j) = i - j + 1;
    }
  symatrix goo(foo);
  //goo = prod(foo,foo);
  std::cout << prod(foo,foo)<< std::endl;

}

Но если я раскомментирую строку goo = prod(foo,foo); или попробую что-то вроде:

symatrix goo = prod(foo,foo);

Я получаю ошибку времени выполнения, не могурасшифровать.

Check failed in file /usr/include/boost/numeric/ublas/detail/matrix_assign.hpp at line 761:
detail::expression_type_check (m, cm)
terminate called after throwing an instance of 'boost::numeric::ublas::external_logic'
  what():  external logic
Aborted

Как мне умножить матрицы и присвоить результат?

1 Ответ

2 голосов
/ 02 мая 2011

Вы не гарантировано , чтобы всегда возвращать симметричную матрицу при умножении двух симметричных матриц.Так что эта ошибка может быть связана с этим, хотя я понятия не имею, почему код работает, когда я изменяю ваш тип на тип symbric_matrix на double.

...