LAPACK
3.4.2
LAPACK: Linear Algebra PACKage

Go to the source code of this file.
Functions/Subroutines  
subroutine  zlatrd (UPLO, N, NB, A, LDA, E, TAU, W, LDW) 
ZLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an unitary similarity transformation. 
subroutine zlatrd  (  character  UPLO, 
integer  N,  
integer  NB,  
complex*16, dimension( lda, * )  A,  
integer  LDA,  
double precision, dimension( * )  E,  
complex*16, dimension( * )  TAU,  
complex*16, dimension( ldw, * )  W,  
integer  LDW  
) 
ZLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an unitary similarity transformation.
Download ZLATRD + dependencies [TGZ] [ZIP] [TXT]ZLATRD reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by a unitary similarity transformation Q**H * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A. If UPLO = 'U', ZLATRD reduces the last NB rows and columns of a matrix, of which the upper triangle is supplied; if UPLO = 'L', ZLATRD reduces the first NB rows and columns of a matrix, of which the lower triangle is supplied. This is an auxiliary routine called by ZHETRD.
[in]  UPLO  UPLO is CHARACTER*1 Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored: = 'U': Upper triangular = 'L': Lower triangular 
[in]  N  N is INTEGER The order of the matrix A. 
[in]  NB  NB is INTEGER The number of rows and columns to be reduced. 
[in,out]  A  A is COMPLEX*16 array, dimension (LDA,N) On entry, the Hermitian matrix A. If UPLO = 'U', the leading nbyn upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = 'L', the leading nbyn lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit: if UPLO = 'U', the last NB columns have been reduced to tridiagonal form, with the diagonal elements overwriting the diagonal elements of A; the elements above the diagonal with the array TAU, represent the unitary matrix Q as a product of elementary reflectors; if UPLO = 'L', the first NB columns have been reduced to tridiagonal form, with the diagonal elements overwriting the diagonal elements of A; the elements below the diagonal with the array TAU, represent the unitary matrix Q as a product of elementary reflectors. See Further Details. 
[in]  LDA  LDA is INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  E  E is DOUBLE PRECISION array, dimension (N1) If UPLO = 'U', E(nnb:n1) contains the superdiagonal elements of the last NB columns of the reduced matrix; if UPLO = 'L', E(1:nb) contains the subdiagonal elements of the first NB columns of the reduced matrix. 
[out]  TAU  TAU is COMPLEX*16 array, dimension (N1) The scalar factors of the elementary reflectors, stored in TAU(nnb:n1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'. See Further Details. 
[out]  W  W is COMPLEX*16 array, dimension (LDW,NB) The nbynb matrix W required to update the unreduced part of A. 
[in]  LDW  LDW is INTEGER The leading dimension of the array W. LDW >= max(1,N). 
If UPLO = 'U', the matrix Q is represented as a product of elementary reflectors Q = H(n) H(n1) . . . H(nnb+1). Each H(i) has the form H(i) = I  tau * v * v**H where tau is a complex scalar, and v is a complex vector with v(i:n) = 0 and v(i1) = 1; v(1:i1) is stored on exit in A(1:i1,i), and tau in TAU(i1). If UPLO = 'L', the matrix Q is represented as a product of elementary reflectors Q = H(1) H(2) . . . H(nb). Each H(i) has the form H(i) = I  tau * v * v**H where tau is a complex scalar, and v is a complex vector with v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), and tau in TAU(i). The elements of the vectors v together form the nbynb matrix V which is needed, with W, to apply the transformation to the unreduced part of the matrix, using a Hermitian rank2k update of the form: A := A  V*W**H  W*V**H. The contents of A on exit are illustrated by the following examples with n = 5 and nb = 2: if UPLO = 'U': if UPLO = 'L': ( a a a v4 v5 ) ( d ) ( a a v4 v5 ) ( 1 d ) ( a 1 v5 ) ( v1 1 a ) ( d 1 ) ( v1 v2 a a ) ( d ) ( v1 v2 a a a ) where d denotes a diagonal element of the reduced matrix, a denotes an element of the original matrix that is unchanged, and vi denotes an element of the vector defining H(i).
Definition at line 200 of file zlatrd.f.