Boost logo

Ublas :

From: Vadim von Brzeski (madvlad_at_[hidden])
Date: 2008-02-04 00:44:23


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.