I am trying to call lapack::geev via lapack as follows:
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/bindings/lapack/geev.hpp>
#include
<boost/numeric/bindings/traits/ublas_matrix.hpp>
#include
<boost/numeric/bindings/traits/ublas_vector.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
namespace ublas = boost::numeric::ublas;
namespace lapack = boost::numeric::bindings::lapack;
int main()
{
ublas::matrix<double,
ublas::column_major> Y(3,3);
ublas::vector<
std::complex<double> > evals(3);
//
assign some vals to Y
//.....
lapack::geev(Y, evals, NULL, NULL,
lapack::optimal_workspace());
}
But I get is this:
test.cpp:78: error: no matching function for call to `geev
(boost::numeric::ublas::matrix<double,
boost::numeric::ublas::column_major,
boost::numeric::ublas::unbounded_array<double,
std::allocator<double> >
>&,
boost::numeric::ublas::vector<std::complex<double>,
boost::numeric::ublas::unbounded_array<std::complex<double>,
std::allocator<std::complex<double> > >
>&, int, int, boost::numeric::bindings::lapack::optimal_workspace)'
I tried Y as ‘row-major’ – same result.
If you look into boost/numeric/bindings/lapack/geev.hpp,
this is the definition
// gateway / dispatch routine
template <typename A, typename W,
typename V>
int geev(A& a, W& w, V* vl,
V* vr, optimal_workspace)
{
.....
}
So I am confused. Can someone please provide some
examples on how one would call geev, and also what the vl and vr parameters
should be?
Thank you.
Vadim v. B.