Multi-shift Hessenberg solves

Implementation

Solve for \(X\) in the system

\[H^\# X - X D^\# = Y\]

where \(H\) is Hessenberg, \(D\) is diagonal, and \(A^\#\) is defined to be one of \(\{A,A^T,A^H\}\).

Note

Only a few subcases are currently supported, as this was added as part of HessenbergPseudospectrum()

C++ API

void MultiShiftHessSolve(UpperOrLower uplo, Orientation orientation, F alpha, const Matrix<F> &H, const Matrix<F> &shifts, Matrix<F> &X)
void MultiShiftHessSolve(UpperOrLower uplo, Orientation orientation, F alpha, const AbstractDistMatrix<F> &H, const AbstractDistMatrix<F> &shifts, AbstractDistMatrix<F> &X)

C API

ElError ElMultiShiftHessSolve_s(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_s H, ElConstMatrix_s shifts, ElMatrix_s X)
ElError ElMultiShiftHessSolve_d(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_d H, ElConstMatrix_d shifts, ElMatrix_d X)
ElError ElMultiShiftHessSolve_c(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_c H, ElConstMatrix_c shifts, ElMatrix_c X)
ElError ElMultiShiftHessSolve_z(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_z H, ElConstMatrix_z shifts, ElMatrix_z X)
ElError ElMultiShiftHessSolveDist_s(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_s H, ElConstDistMatrix_s shifts, ElDistMatrix_s X)
ElError ElMultiShiftHessSolveDist_d(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_d H, ElConstDistMatrix_d shifts, ElDistMatrix_d X)
ElError ElMultiShiftHessSolveDist_c(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_c H, ElConstDistMatrix_c shifts, ElDistMatrix_c X)
ElError ElMultiShiftHessSolveDist_z(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_z H, ElConstDistMatrix_z shifts, ElDistMatrix_z X)