These are chat archives for elemental/chat

25th
Jul 2018
Walter Landry
@wlandry
Jul 25 2018 23:37
I think I figured out the problem. DivideAndConquer() calls itself recursively and then calls Merge() to merge the results. When not computing eigenvectors, Merge() expects to get the last eigenvector of the first submatrix and the first eigenvector of the last second. However, the output of Merge() is the middle two eigenvectors, not the first and last eigenvectors. So everything works fine if there is only one level of recursion, but it breaks down with two levels.
So my workaround is either to always compute eigenvectors or to increase hermitian_eig_ctrl.tridiagEigCtrl.dcCtrl.cutoff to greater than half of the size of my matrix.
I looked into actually fixing this, but it is unclear to me why Merge() likes having those particular eigenvalues. There is a lot of manipulation of indices that would take me a while to figure out.