From: Andreas KlÃ¶ckner (lists_at_[hidden])
Date: 2008-05-01 13:25:10
On Donnerstag 01 Mai 2008, Thomas Klimpel wrote:
> 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.
Nice :) Integrated into boost-bindings-20080501, from here: