Multi-shift Hessenberg solves

Implementation

Solve for \(X\) in the system

\[H^\# X - X D^\# = \alpha 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()

Python API

MultiShiftHessSolve(H, shifts, X[, alpha=1, uplo=LOWER, orient=NORMAL])
Parameters
  • H – Dense Hessenberg matrix to solve against (with shifts)

  • shifts – a list of shifts (one per right-hand side) to subtract from the diagonal of \(H\) before solving the linear system

  • X – the right-hand sides to solve against (and overwrite)

  • alpha – (optional) the scaling of the right-hand sides

  • uplo – (optional) whether \(H\) is lower or upper-Hessenberg

  • orient – (optional) whether to solve against \(H\), \(H^T\), or \(H^H\)

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

Single-precision

ElError ElMultiShiftHessSolve_s(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_s H, ElConstMatrix_s shifts, ElMatrix_s X)
ElError ElMultiShiftHessSolveDist_s(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_s H, ElConstDistMatrix_s shifts, ElDistMatrix_s X)

Double-precision

ElError ElMultiShiftHessSolve_d(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_d H, ElConstMatrix_d shifts, ElMatrix_d X)
ElError ElMultiShiftHessSolveDist_d(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_d H, ElConstDistMatrix_d shifts, ElDistMatrix_d X)

Single-precision complex

ElError ElMultiShiftHessSolve_c(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_c H, ElConstMatrix_c shifts, ElMatrix_c X)
ElError ElMultiShiftHessSolveDist_c(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_c H, ElConstDistMatrix_c shifts, ElDistMatrix_c X)

Double-precision complex

ElError ElMultiShiftHessSolve_z(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_z H, ElConstMatrix_z shifts, ElMatrix_z X)
ElError ElMultiShiftHessSolveDist_z(ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_z H, ElConstDistMatrix_z shifts, ElDistMatrix_z X)