The Hermitian matrix A could be represented as A=Q·T·QH, where Q is an unitary matrix, and T is a real tridiagonal matrix. We can say that matrix A is reduced to a tridiagonal matrix via a similarity transformation: QH·A·Q = T.
As a result of HMatrixTD subroutine, matrix A is replaced by the tridiagonal matrix T and a sequence of reflections transformations stored in a compact form. The format of the matrix and the subroutine parameters are described in detail in the subroutine comments; there we can note an analogy with QR-decomposition, that uses the lower triangular part of the matrix R to store the matrix Q and utilizes a very similar data storage format. As with QR decomposition, a subroutine for "unpacking" the matrix Q is presented: HMatrixTDUnpackQ.
This algorithm is transferred from the LAPACK library.
This article is licensed for personal use only.
ALGLIB Project offers you two editions of ALGLIB:
ALGLIB Free Edition:
+delivered for free
+offers full set of numerical functionality
+extensive algorithmic optimizations
-no multithreading
-non-commercial license
ALGLIB Commercial Edition:
+flexible pricing
+offers full set of numerical functionality
+extensive algorithmic optimizations
+high performance (SMP, SIMD)
+commercial license with support plan
Links to download sections for Free and Commercial editions can be found below: