![]() |
LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine sget22 | ( | character | transa, |
character | transe, | ||
character | transw, | ||
integer | n, | ||
real, dimension( lda, * ) | a, | ||
integer | lda, | ||
real, dimension( lde, * ) | e, | ||
integer | lde, | ||
real, dimension( * ) | wr, | ||
real, dimension( * ) | wi, | ||
real, dimension( * ) | work, | ||
real, dimension( 2 ) | result ) |
SGET22
!> !> SGET22 does an eigenvector check. !> !> The basic test is: !> !> RESULT(1) = | A E - E W | / ( |A| |E| ulp ) !> !> using the 1-norm. It also tests the normalization of E: !> !> RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp ) !> j !> !> where E(j) is the j-th eigenvector, and m-norm is the max-norm of a !> vector. If an eigenvector is complex, as determined from WI(j) !> nonzero, then the max-norm of the vector ( er + i*ei ) is the maximum !> of !> |er(1)| + |ei(1)|, ... , |er(n)| + |ei(n)| !> !> W is a block diagonal matrix, with a 1 by 1 block for each real !> eigenvalue and a 2 by 2 block for each complex conjugate pair. !> If eigenvalues j and j+1 are a complex conjugate pair, so that !> WR(j) = WR(j+1) = wr and WI(j) = - WI(j+1) = wi, then the 2 by 2 !> block corresponding to the pair will be: !> !> ( wr wi ) !> ( -wi wr ) !> !> Such a block multiplying an n by 2 matrix ( ur ui ) on the right !> will be the same as multiplying ur + i*ui by wr + i*wi. !> !> To handle various schemes for storage of left eigenvectors, there are !> options to use A-transpose instead of A, E-transpose instead of E, !> and/or W-transpose instead of W. !>
[in] | TRANSA | !> TRANSA is CHARACTER*1 !> Specifies whether or not A is transposed. !> = 'N': No transpose !> = 'T': Transpose !> = 'C': Conjugate transpose (= Transpose) !> |
[in] | TRANSE | !> TRANSE is CHARACTER*1 !> Specifies whether or not E is transposed. !> = 'N': No transpose, eigenvectors are in columns of E !> = 'T': Transpose, eigenvectors are in rows of E !> = 'C': Conjugate transpose (= Transpose) !> |
[in] | TRANSW | !> TRANSW is CHARACTER*1 !> Specifies whether or not W is transposed. !> = 'N': No transpose !> = 'T': Transpose, use -WI(j) instead of WI(j) !> = 'C': Conjugate transpose, use -WI(j) instead of WI(j) !> |
[in] | N | !> N is INTEGER !> The order of the matrix A. N >= 0. !> |
[in] | A | !> A is REAL array, dimension (LDA,N) !> The matrix whose eigenvectors are in E. !> |
[in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,N). !> |
[in] | E | !> E is REAL array, dimension (LDE,N) !> The matrix of eigenvectors. If TRANSE = 'N', the eigenvectors !> are stored in the columns of E, if TRANSE = 'T' or 'C', the !> eigenvectors are stored in the rows of E. !> |
[in] | LDE | !> LDE is INTEGER !> The leading dimension of the array E. LDE >= max(1,N). !> |
[in] | WR | !> WR is REAL array, dimension (N) !> |
[in] | WI | !> WI is REAL array, dimension (N) !> !> The real and imaginary parts of the eigenvalues of A. !> Purely real eigenvalues are indicated by WI(j) = 0. !> Complex conjugate pairs are indicated by WR(j)=WR(j+1) and !> WI(j) = - WI(j+1) non-zero; the real part is assumed to be !> stored in the j-th row/column and the imaginary part in !> the (j+1)-th row/column. !> |
[out] | WORK | !> WORK is REAL array, dimension (N*(N+1)) !> |
[out] | RESULT | !> RESULT is REAL array, dimension (2) !> RESULT(1) = | A E - E W | / ( |A| |E| ulp ) !> RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp ) !> j !> |
Definition at line 166 of file sget22.f.