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::unbounded_array<double, std::allocator<double> >

>&, boost::numeric::ublas::vector<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.