From: Nico Galoppo (ngaloppo_at_[hidden])
Date: 2008-05-01 13:52:10
Awesome! Am I correct in assuming that the difference between these
bindings and the syev bindings that were already in the lapack
bindings is that syevd allows for partial eigenvalue decomposition (as
opposed to computing all eigenvalues/vectors at once)?
On Thu, May 1, 2008 at 6:26 AM, Thomas Klimpel
> Hi all,
> Attached are bindings for syevd, heevd, syevx and heevx, so that they can be reviewed if desired.
> These bindings require integer workspaces in addition to the real/complex workspaces normally required. This is solved by using "std::pair<detail::workspace2<WC,WR>, detail::workspace1<WI> > work" as parameter in case of user given workarrays, and minimal_workspace or optimal_workspace in case of automatically allocated temporary arrays.
> The workspace for optimal_workspace is determined by a workspace query with lwork=-1, because it seems to work just fine.
> These bindings use the logic from hbev.hpp, that a real symmetric matrix is also a real hermitian matrix. The files syevd.hpp and syevx.hpp just forward the function call to heevd and heevx, but check that the value type is a real type (not complex).
> The tests ublas_heevd.cpp and ublas_heevx.cpp are just slightly modified versions of ublas_heev.cpp, but they also test for do_value_type< float >() and do_value_type< double >() in addition to do_value_type< std::complex<float> >() and do_value_type< std::complex<double> >().
> I only tested these bindings with lapack 3.1, but I guess they will also work with lapack 3.0. I don't expect these bindings to work with lapack 2.x, but I don't think that supporting lapack 2.x is still required.
> I will commit these bindings to the sandbox version of the bindings sooner or later, if no strong objections occur. Feel free to comment on them and give suggestions.
> ublas mailing list
-- Nico Galoppo :: http://www.ngaloppo.org