LAPACK
3.4.2
LAPACK: Linear Algebra PACKage

Go to the source code of this file.
Functions/Subroutines  
subroutine  dlatrd (UPLO, N, NB, A, LDA, E, TAU, W, LDW) 
DLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an orthogonal similarity transformation. 
subroutine dlatrd  (  character  UPLO, 
integer  N,  
integer  NB,  
double precision, dimension( lda, * )  A,  
integer  LDA,  
double precision, dimension( * )  E,  
double precision, dimension( * )  TAU,  
double precision, dimension( ldw, * )  W,  
integer  LDW  
) 
DLATRD reduces the first nb rows and columns of a symmetric/Hermitian matrix A to real tridiagonal form by an orthogonal similarity transformation.
Download DLATRD + dependencies [TGZ] [ZIP] [TXT]DLATRD reduces NB rows and columns of a real symmetric matrix A to symmetric tridiagonal form by an orthogonal similarity transformation Q**T * 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', DLATRD reduces the last NB rows and columns of a matrix, of which the upper triangle is supplied; if UPLO = 'L', DLATRD reduces the first NB rows and columns of a matrix, of which the lower triangle is supplied. This is an auxiliary routine called by DSYTRD.
[in]  UPLO  UPLO is CHARACTER*1 Specifies whether the upper or lower triangular part of the symmetric 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 DOUBLE PRECISION array, dimension (LDA,N) On entry, the symmetric 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 orthogonal 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 orthogonal matrix Q as a product of elementary reflectors. See Further Details. 
[in]  LDA  LDA is INTEGER The leading dimension of the array A. LDA >= (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 DOUBLE PRECISION 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 DOUBLE PRECISION 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**T where tau is a real scalar, and v is a real 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**T where tau is a real scalar, and v is a real 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 symmetric rank2k update of the form: A := A  V*W**T  W*V**T. 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 199 of file dlatrd.f.