General to bidiagonal¶
Reduces a general fully-populated \(m \times n\) matrix to bidiagonal form through two-sided Householder transformations; when the \(m \ge n\), the result is upper bidiagonal, otherwise it is lower bidiagonal. This routine is most commonly used as a preprocessing step in computing the SVD of a general matrix.
Reduction¶
C++ API¶
-
void
Bidiag
(AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &tP, AbstractDistMatrix<F> &tQ)¶ Overwrites the main and sub (or super) diagonal of the real matrix A with the resulting bidiagonal matrix and stores the scaled Householder vectors in the remainder of the matrix. The complex case must also store the scalings of the Householder transformations (in tP and tQ) if they are to be applied.
-
void
bidiag
::
Explicit
(AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &P, AbstractDistMatrix<F> &Q)¶ Overwrite \(A\) with the bidiagonal matrix, \(B = Q^H A P\), and also return \(P\) and \(Q\).
-
void
bidiag
::
ExplicitCondensed
(AbstractDistMatrix<F> &A)¶ Returns just the resulting bidiagonal matrix, \(B = Q^H A P\).
C API¶
-
ElError
ElBidiagDist_z
(ElDistMatrix_z A, ElDistMatrix_z tP, ElDistMatrix_z tQ)¶ Overwrites the main and sub (or super) diagonal of the real matrix A with the resulting bidiagonal matrix and stores the scaled Householder vectors in the remainder of the matrix. The complex case must also store the scalings of the Householder transformations (in tP and tQ) if they are to be applied.
Applying the changes of basis¶
C++ API¶
-
void
bidiag
::
ApplyQ
(LeftOrRight side, Orientation orientation, const Matrix<F> &A, const Matrix<F> &t, Matrix<F> &B)¶
-
void
bidiag
::
ApplyQ
(LeftOrRight side, Orientation orientation, const AbstractDistMatrix<F> &A, const AbstractDistMatrix<F> &t, AbstractDistMatrix<F> &B)¶
-
void
bidiag
::
ApplyP
(LeftOrRight side, Orientation orientation, const Matrix<F> &A, const Matrix<F> &t, Matrix<F> &B)¶
-
void
bidiag
::
ApplyP
(LeftOrRight side, Orientation orientation, const AbstractDistMatrix<F> &A, const AbstractDistMatrix<F> &t, AbstractDistMatrix<F> &B)¶
C API¶
-
ElError
ElApplyQAfterBidiag_s
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_s A, ElConstMatrix_s t, ElMatrix_s B)¶
-
ElError
ElApplyQAfterBidiag_d
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_d A, ElConstMatrix_d t, ElMatrix_d B)¶
-
ElError
ElApplyQAfterBidiag_c
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_c A, ElConstMatrix_c t, ElMatrix_c B)¶
-
ElError
ElApplyQAfterBidiag_z
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_z A, ElConstMatrix_z t, ElMatrix_z B)¶
-
ElError
ElApplyQAfterBidiagDist_s
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_s A, ElConstDistMatrix_s t, ElDistMatrix_s B)¶
-
ElError
ElApplyQAfterBidiagDist_d
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_d A, ElConstDistMatrix_d t, ElDistMatrix_d B)¶
-
ElError
ElApplyQAfterBidiagDist_c
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_c A, ElConstDistMatrix_c t, ElDistMatrix_c B)¶
-
ElError
ElApplyQAfterBidiagDist_z
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_z A, ElConstDistMatrix_z t, ElDistMatrix_z B)¶
-
ElError
ElApplyPAfterBidiag_s
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_s A, ElConstMatrix_s t, ElMatrix_s B)¶
-
ElError
ElApplyPAfterBidiag_d
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_d A, ElConstMatrix_d t, ElMatrix_d B)¶
-
ElError
ElApplyPAfterBidiag_c
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_c A, ElConstMatrix_c t, ElMatrix_c B)¶
-
ElError
ElApplyPAfterBidiag_z
(ElLeftOrRight side, ElOrientation orientation, ElConstMatrix_z A, ElConstMatrix_z t, ElMatrix_z B)¶
-
ElError
ElApplyPAfterBidiagDist_s
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_s A, ElConstDistMatrix_s t, ElDistMatrix_s B)¶
-
ElError
ElApplyPAfterBidiagDist_d
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_d A, ElConstDistMatrix_d t, ElDistMatrix_d B)¶
-
ElError
ElApplyPAfterBidiagDist_c
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_c A, ElConstDistMatrix_c t, ElDistMatrix_c B)¶
-
ElError
ElApplyPAfterBidiagDist_z
(ElLeftOrRight side, ElOrientation orientation, ElConstDistMatrix_z A, ElConstDistMatrix_z t, ElDistMatrix_z B)¶