@@ -212,8 +212,8 @@ def solve_dense(self, subproblem, rebuild_matrices=False, left=False, normalize_
212212 if left :
213213 self .eigenvalues , pre_left_evecs , pre_right_evecs = eig_output
214214 self .right_eigenvectors = self .eigenvectors = sp .pre_right @ pre_right_evecs
215- self .left_eigenvectors = sp .pre_left .conj ().toarray () @ pre_left_evecs
216- self .modified_left_eigenvectors = (sp .M_min @ sp .pre_right_pinv ).conj ().toarray () @ pre_left_evecs
215+ self .left_eigenvectors = sp .pre_left .conj ().T @ pre_left_evecs
216+ self .modified_left_eigenvectors = (sp .M_min @ sp .pre_right_pinv ).conj ().T @ pre_left_evecs
217217 if normalize_left :
218218 norms = np .diag (pre_left_evecs .T .conj () @ sp .M_min @ pre_right_evecs )
219219 self .left_eigenvectors /= np .conj (norms )
@@ -270,8 +270,8 @@ def solve_sparse(self, subproblem, N, target, rebuild_matrices=False, left=False
270270 # Note: this definition of "left eigenvectors" is consistent with the documentation for scipy.linalg.eig
271271 self .eigenvalues , pre_right_evecs , self .left_eigenvalues , pre_left_evecs = eig_output
272272 self .right_eigenvectors = self .eigenvectors = sp .pre_right @ pre_right_evecs
273- self .left_eigenvectors = sp .pre_left .conj ().toarray () @ pre_left_evecs
274- self .modified_left_eigenvectors = (sp .M_min @ sp .pre_right_pinv ).conj ().toarray () @ pre_left_evecs
273+ self .left_eigenvectors = sp .pre_left .conj ().T @ pre_left_evecs
274+ self .modified_left_eigenvectors = (sp .M_min @ sp .pre_right_pinv ).conj ().T @ pre_left_evecs
275275 # Check that eigenvalues match
276276 if not np .allclose (self .eigenvalues , np .conjugate (self .left_eigenvalues )):
277277 if raise_on_mismatch :
0 commit comments