This bugzilla service is closed. All entries have been migrated to https://gitlab.com/libeigen/eigen

Bug 865

Summary: SelfAdjointEigenSolver::compute() should work with C++11 move semantics when available.
Product: Eigen Reporter: Jim Garrison <jim>
Component: EigenvaluesAssignee: Nobody <eigen.nobody>
Status: CONFIRMED ---    
Severity: Feature Request CC: chtz, gael.guennebaud, jacob.benoit.1, jitseniesen
Priority: Normal Keywords: JuniorJob
Version: unspecified   
Hardware: All   
OS: All   
Whiteboard:

Description Jim Garrison 2014-08-26 06:50:46 UTC
Currently, SelfAdjointEigenSolver::compute() takes a matrix by const reference.  It then copies this matrix (or, rather, a lower triangular view of it if not using MKL) to m_eivec, and operates only on m_eivec throughout the remainder of the calculation.  This is suboptimal, as it means that the original matrix must be stored in memory for the duration of the calculation, even if it is to be thrown away immediately afterward.  If SelfAdjointEigenSolver were to support C++11 move semantics, the user could avoid this inefficiency, saving nearly a factor of two on the amount of memory needed to diagonalize a matrix.
Comment 1 Gael Guennebaud 2014-08-26 13:14:12 UTC
Patch welcome. Note that we already have the macro EIGEN_HAVE_RVALUE_REFERENCES to detect whether rvalue references can be used.
Comment 2 Nobody 2019-12-04 13:38:45 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/865.