Square to Hessenberg¶
Reduction¶
Elemental’s algorithms for reducing square matrices to Hessenberg form via products of Householder similarity transformations are straight-forward parallelizations (and extensions to the complex field) of an algorithm described within [QvdG2006], which can be viewed as a modification of the corresponding algorithm from [DSH1989] which shifts some of the work from level 2 to level 3 BLAS.
C++ API¶
-
void
Hessenberg
(UpperOrLower uplo, Matrix<F> &A, Matrix<F> &t)¶
-
void
Hessenberg
(UpperOrLower uplo, AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &t)¶ Return the in-place reduction of the matrix A to lower-/upper-Hessenberg form. The vector t contains the scalings for the Householder reflectors, which are stored in the locations of the zeros that they introduced.
-
void
hessenberg
::
ExplicitCondensed
(UpperOrLower uplo, Matrix<F> &A)¶
-
void
hessenberg
::
ExplicitCondensed
(UpperOrLower uplo, AbstractDistMatrix<F> &A)¶ Return just the Hessenberg matrix.
C API¶
Single-precision¶
-
ElError
ElHessenberg_s
(ElUpperOrLower uplo, ElMatrix_s A, ElMatrix_s t)¶
-
ElError
ElHessenbergDist_s
(ElUpperOrLower uplo, ElDistMatrix_s A, ElDistMatrix_s t)¶ Return the in-place reduction of the matrix A to lower-/upper-Hessenberg form. The vector t contains the scalings for the Householder reflectors, which are stored in the locations of the zeros that they introduced.
-
ElError
ElHessenbergExplicitCondensed_s
(ElUpperOrLower uplo, ElMatrix_s A)¶
-
ElError
ElHessenbergExplicitCondensedDist_s
(ElUpperOrLower uplo, ElDistMatrix_s A)¶ Return just the Hessenberg matrix.
Double-precision¶
-
ElError
ElHessenberg_d
(ElUpperOrLower uplo, ElMatrix_d A, ElMatrix_d t)¶
-
ElError
ElHessenbergDist_d
(ElUpperOrLower uplo, ElDistMatrix_d A, ElDistMatrix_d t)¶ Return the in-place reduction of the matrix A to lower-/upper-Hessenberg form. The vector t contains the scalings for the Householder reflectors, which are stored in the locations of the zeros that they introduced.
-
ElError
ElHessenbergExplicitCondensed_d
(ElUpperOrLower uplo, ElMatrix_d A)¶
-
ElError
ElHessenbergExplicitCondensedDist_d
(ElUpperOrLower uplo, ElDistMatrix_d A)¶ Return just the Hessenberg matrix.
Single-precision complex¶
-
ElError
ElHessenberg_c
(ElUpperOrLower uplo, ElMatrix_c A, ElMatrix_c t)¶
-
ElError
ElHessenbergDist_c
(ElUpperOrLower uplo, ElDistMatrix_c A, ElDistMatrix_c t)¶ Return the in-place reduction of the matrix A to lower-/upper-Hessenberg form. The vector t contains the scalings for the Householder reflectors, which are stored in the locations of the zeros that they introduced.
-
ElError
ElHessenbergExplicitCondensed_c
(ElUpperOrLower uplo, ElMatrix_c A)¶
-
ElError
ElHessenbergExplicitCondensedDist_c
(ElUpperOrLower uplo, ElDistMatrix_c A)¶ Return just the Hessenberg matrix.
Double-precision complex¶
-
ElError
ElHessenberg_z
(ElUpperOrLower uplo, ElMatrix_z A, ElMatrix_z t)¶
-
ElError
ElHessenbergDist_z
(ElUpperOrLower uplo, ElDistMatrix_z A, ElDistMatrix_z t)¶ Return the in-place reduction of the matrix A to lower-/upper-Hessenberg form. The vector t contains the scalings for the Householder reflectors, which are stored in the locations of the zeros that they introduced.
-
ElError
ElHessenbergExplicitCondensed_z
(ElUpperOrLower uplo, ElMatrix_z A)¶
-
ElError
ElHessenbergExplicitCondensedDist_z
(ElUpperOrLower uplo, ElDistMatrix_z A)¶ Return just the Hessenberg matrix.
Applying the change of basis¶
C++ API¶
-
void
hessenberg
::
ApplyQ
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, const Matrix<F> &A, const Matrix<F> &t, Matrix<F> &H)¶
-
void
hessenberg
::
ApplyQ
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, const AbstractDistMatrix<F> &A, const AbstractDistMatrix<F> &t, AbstractDistMatrix<F> &H)¶
C API¶
Single-precision¶
-
ElError
ElApplyQAfterHessenberg_s
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstMatrix_s A, ElConstMatrix_s t, ElMatrix_s H)¶
-
ElError
ElApplyQAfterHessenbergDist_s
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstDistMatrix_s A, ElConstDistMatrix_s t, ElDistMatrix_s H)¶
Double-precision¶
-
ElError
ElApplyQAfterHessenberg_d
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstMatrix_d A, ElConstMatrix_d t, ElMatrix_d H)¶
-
ElError
ElApplyQAfterHessenbergDist_d
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstDistMatrix_d A, ElConstDistMatrix_d t, ElDistMatrix_d H)¶
Single-precision complex¶
-
ElError
ElApplyQAfterHessenberg_c
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstMatrix_c A, ElConstMatrix_c t, ElMatrix_c H)¶
-
ElError
ElApplyQAfterHessenbergDist_c
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstDistMatrix_c A, ElConstDistMatrix_c t, ElDistMatrix_c H)¶
Double-precision complex¶
-
ElError
ElApplyQAfterHessenberg_z
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstMatrix_z A, ElConstMatrix_z t, ElMatrix_z H)¶
-
ElError
ElApplyQAfterHessenbergDist_z
(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElConstDistMatrix_z A, ElConstDistMatrix_z t, ElDistMatrix_z H)¶
References¶
- DSH1989
Jack J. Dongarra, Danny C. Sorensen, and Sven J. Hammarling, Block reduction of matrices to condensed forms for eigenvalue computations, Journal of Computational and Applied Mathematics, Vol. 27, Issues 1–2, pp. 215–227, 1989. DOI: http://dx.doi.org/10.1016/0377-0427(89)90367-1 <http://dx.doi.org/10.1016/0377-0427(89)90367-1>`__
- QvdG2006
Gregorio Quintana-Orti and Robert van de Geijn, Improving the performance of reduction to Hessenberg form, ACM Transactions on Mathematical Software, Vol. 32, Issue 2, pp. 180–194, 2006. DOI: http://dx.doi.org/10.1145/1141885.1141887