Bidiagonalization

Bidiagonalization is one of unitary (orthogonal) matrix decompositions such that U* A V = B, where U and V are unitary (orthogonal) matrices; * denotes Hermitian transpose; and B is upper bidiagonal. A is allowed to be rectangular.
For dense matrices, the left and right unitary matrices are obtained by a series of Householder reflections alternately applied from the left and right. This is known as Golub-Kahan bidiagonalization. For large matrices, they are calculated iteratively by using Lanczos method, referred to as Golub-Kahan-Lanczos method.
Bidiagonalization has a very similar structure to the singular value decomposition (SVD). However, it is computed within finite operations, while SVD requires iterative schemes to find singular values. It is because the squared singular values are the roots of characteristic polynomials of A* A, where A is assumed to be tall.