### 14.9 Tridiagonal Decomposition of Real Symmetric Matrices

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

    A = Q T Q^T

where Q is an orthogonal matrix and T is a symmetric tridiagonal matrix.

Function: int gsl_linalg_symmtd_decomp (gsl_matrix * A, gsl_vector * tau)

  This function factorizes the symmetric square matrix A into the symmetric tridiagonal decomposition Q T Q^T. On output the diagonal and subdiagonal part of the input matrix A contain the tridiagonal matrix T. The remaining lower triangular part of the input matrix contains the Householder vectors which, together with the Householder coefficients tau, encode the orthogonal matrix Q. This storage scheme is the same as used by LAPACK. The upper triangular part of A is not referenced.

Function: int gsl_linalg_symmtd_unpack (const gsl_matrix * A, const gsl_vector * tau, gsl_matrix * Q, gsl_vector * diag, gsl_vector * subdiag)

  This function unpacks the encoded symmetric tridiagonal decomposition (A, tau) obtained from `gsl_linalg_symmtd_decomp` into the orthogonal matrix Q, the vector of diagonal elements diag and the vector of subdiagonal elements subdiag.

Function: int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A, gsl_vector * diag, gsl_vector * subdiag)

  This function unpacks the diagonal and subdiagonal of the encoded symmetric tridiagonal decomposition (A, tau) obtained from `gsl_linalg_symmtd_decomp` into the vectors diag and subdiag.