Расширение библиотеки uBLAS в сочетании с мультиточечными поплавками GMP

Я пытаюсь объединить разреженные матрицы uBLAS с числами с плавающей запятой GMP. Я сократил свой сложный источник до следующего фрагмента теста, который по некоторым причинам отказывается компилировать:

#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <gmpxx.h>
#include <iostream>

using namespace std;

int main() {
namespace ublas = boost::numeric::ublas;

ublas::mapped_matrix<mpf_class> A(1,1);
mpf_class f(1, 64);

A(0,0) = f;
cout << A(0,0) / 2 << endl;
}

Команда компиляции так же проста:

g++ -lgmpxx -lgmp test.cpp
test.cpp: In function 'int main()':
test.cpp:15:20: error: no match for 'operator/' in  boost::numeric::ublas::mapped_matrix<T, L, A>::operator()(boost::numeric::ublas::mapped_matrix<T, L, A>::size_type, boost::numeric::ublas::mapped_matrix<T, L, A>::size_type) [with T = __gmp_expr<__mpf_struct [1], __mpf_struct [1]>; L = boost::numeric::ublas::basic_row_major<>; A = boost::numeric::ublas::map_std<unsigned int, __gmp_expr<__mpf_struct [1], __mpf_struct [1]>, std::allocator<std::pair<const unsigned int, __gmp_expr<__mpf_struct [1], __mpf_struct [1]> > > >; boost::numeric::ublas::mapped_matrix<T, L, A>::reference = boost::numeric::ublas::sparse_matrix_element<boost::numeric::ublas::mapped_matrix<__gmp_expr<__mpf_struct [1], __mpf_struct [1]> > >; boost::numeric::ublas::mapped_matrix<T, L, A>::size_type = unsigned int](0u, 0u) / 2'

Из того, что я понимаю по ошибке GCC, operator() применительно к A(0,0) не может вернуть ссылку на мульти-точность f типа mpf_classи, в свою очередь, применить operator/ между ссылками f а также 2, Вместо этого, кажется, что UBLAS лечит operator/ как собственный оператор, таким образом, будучи не в состоянии применить operator/ в f

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]