Boost logo

Ublas :

Subject: [ublas] error on ggev
From: Kraus Philipp (philipp.kraus_at_[hidden])
Date: 2010-12-18 14:40:42


Hello,

I use the numerical bindings for LAPack with this call:

ggev( 'N', 'V', p_matrix, l_diag, l_eigval, l_tmp1, l_div, l_tmp2,
l_eigvec, linalg::optimal_workspace() );

The parameters are defined with

ublas::matrix<T, ublas::column_major> l_matrix(p_matrix);
ublas::matrix<T, ublas::column_major> l_diag(p_diag);

ublas::matrix<T, ublas::column_major> l_eigvec(l_matrix.size1(),
l_matrix.size2());
ublas::vector<T> l_eigval(l_matrix.size1());
ublas::vector<T> l_div(l_matrix.size1());

ublas::vector<T> l_tmp1(l_eigval.size());
ublas::matrix<T, ublas::column_major>
l_tmp2(l_matrix.size1(),l_matrix.size2());

Now I use the method with T = double and get these errors:

numeric_bindings/boost/numeric/bindings/lapack/driver/ggev.hpp:181:
error: invalid application of 'sizeof' to incomplete type
'boost::STATIC_ASSERTION_FAILURE<false>'

numeric_bindings/boost/numeric/bindings/lapack/driver/ggev.hpp:265:
instantiated from 'static ptrdiff_t
boost::numeric::bindings::lapack::ggev_impl<Value, typename
boost::enable_if<boost::numeric::bindings::is_real<T>,
void>::type>::invoke(char, char, MatrixA&, MatrixB&, VectorALPHAR&,
VectorALPHAI&, VectorBETA&, MatrixVL&, MatrixVR&,
boost::numeric::bindings::lapack::optimal_workspace) [with MatrixA =
const boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, MatrixB = boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, VectorALPHAR = boost::numeric::ublas::vector<double,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, VectorALPHAI = boost::numeric::ublas::vector<double,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, VectorBETA = boost::numeric::ublas::vector<double,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, MatrixVL = boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, MatrixVR = boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, Value = const double]'

numeric_bindings/boost/numeric/bindings/lapack/driver/ggev.hpp:452:
instantiated from 'typename
boost
::enable_if
<boost::numeric::bindings::lapack::detail::is_workspace<Workspace>,
ptrdiff_t>::type boost::numeric::bindings::lapack::ggev(char, char,
MatrixA&, MatrixB&, VectorALPHAR&, VectorALPHAI&, VectorBETA&,
MatrixVL&, MatrixVR&, Workspace) [with MatrixA = const
boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, MatrixB = boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, VectorALPHAR = boost::numeric::ublas::vector<double,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, VectorALPHAI = boost::numeric::ublas::vector<double,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, VectorBETA = boost::numeric::ublas::vector<double,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, MatrixVL = boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, MatrixVR = boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<size_t, ptrdiff_t>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double>
> >, Workspace = boost::numeric::bindings::lapack::optimal_workspace]'

What do I have wrong?

Thanks

Phil