$include_dir="/home/hyper-archives/ublas/include"; include("$include_dir/msg-header.inc") ?>
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