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