GNU Scientific Library Reference Manual - Third Edition (v1.12)by M. Galassi, J. Davies, J. Theiler, B. Gough, G. Jungman, P. Alken, M. Booth, F. Rossi Paperback (6"x9"), 592 pages, 60 figures ISBN 0954612078 RRP £24.95 ($39.95) |

## 13.10 Bidiagonalization

A general matrix A can be factorized by similarity transformations into the form,

A = U B V^T

where U and V are orthogonal matrices and B is a
N-by-N bidiagonal matrix with non-zero entries only on the
diagonal and superdiagonal. The size of `U` is M-by-N
and the size of `V` is N-by-N.

__Function:__int**gsl_linalg_bidiag_decomp***(gsl_matrix **`A`, gsl_vector *`tau_U`, gsl_vector *`tau_V`)- This function factorizes the M-by-N matrix
`A`into bidiagonal form U B V^T. The diagonal and superdiagonal of the matrix B are stored in the diagonal and superdiagonal of`A`. The orthogonal matrices U and`V`are stored as compressed Householder vectors in the remaining elements of`A`. The Householder coefficients are stored in the vectors`tau_U`and`tau_V`. The length of`tau_U`must equal the number of elements in the diagonal of`A`and the length of`tau_V`should be one element shorter.

__Function:__int**gsl_linalg_bidiag_unpack***(const gsl_matrix **`A`, const gsl_vector *`tau_U`, gsl_matrix *`U`, const gsl_vector *`tau_V`, gsl_matrix *`V`, gsl_vector *`diag`, gsl_vector *`superdiag`)- This function unpacks the bidiagonal decomposition of
`A`produced by`gsl_linalg_bidiag_decomp`

, (`A`,`tau_U`,`tau_V`) into the separate orthogonal matrices`U`,`V`and the diagonal vector`diag`and superdiagonal`superdiag`. Note that`U`is stored as a compact M-by-N orthogonal matrix satisfying U^T U = I for efficiency.

__Function:__int**gsl_linalg_bidiag_unpack2***(gsl_matrix **`A`, gsl_vector *`tau_U`, gsl_vector *`tau_V`, gsl_matrix *`V`)- This function unpacks the bidiagonal decomposition of
`A`produced by`gsl_linalg_bidiag_decomp`

, (`A`,`tau_U`,`tau_V`) into the separate orthogonal matrices`U`,`V`and the diagonal vector`diag`and superdiagonal`superdiag`. The matrix`U`is stored in-place in`A`.

__Function:__int**gsl_linalg_bidiag_unpack_B***(const gsl_matrix **`A`, gsl_vector *`diag`, gsl_vector *`superdiag`)- This function unpacks the diagonal and superdiagonal of the bidiagonal
decomposition of
`A`from`gsl_linalg_bidiag_decomp`

, into the diagonal vector`diag`and superdiagonal vector`superdiag`.

ISBN 0954612078 | GNU Scientific Library Reference Manual - Third Edition (v1.12) | See the print edition |