TESTING/EIG/sget52.f(3) Library Functions Manual TESTING/EIG/sget52.f(3) NAME TESTING/EIG/sget52.f SYNOPSIS Functions/Subroutines subroutine sget52 (left, n, a, lda, b, ldb, e, lde, alphar, alphai, beta, work, result) SGET52 Function/Subroutine Documentation subroutine sget52 (logical left, integer n, real, dimension( lda, * ) a, integer lda, real, dimension( ldb, * ) b, integer ldb, real, dimension( lde, * ) e, integer lde, real, dimension( * ) alphar, real, dimension( * ) alphai, real, dimension( * ) beta, real, dimension( * ) work, real, dimension( 2 ) result) SGET52 Purpose: SGET52 does an eigenvector check for the generalized eigenvalue problem. The basic test for right eigenvectors is: | b(j) A E(j) - a(j) B E(j) | RESULT(1) = max ------------------------------- j n ulp max( |b(j) A|, |a(j) B| ) using the 1-norm. Here, a(j)/b(j) = w is the j-th generalized eigenvalue of A - w B, or, equivalently, b(j)/a(j) = m is the j-th generalized eigenvalue of m A - B. For real eigenvalues, the test is straightforward. For complex eigenvalues, E(j) and a(j) are complex, represented by Er(j) + i*Ei(j) and ar(j) + i*ai(j), resp., so the test for that eigenvector becomes max( |Wr|, |Wi| ) -------------------------------------------- n ulp max( |b(j) A|, (|ar(j)|+|ai(j)|) |B| ) where Wr = b(j) A Er(j) - ar(j) B Er(j) + ai(j) B Ei(j) Wi = b(j) A Ei(j) - ai(j) B Er(j) - ar(j) B Ei(j) T T _ For left eigenvectors, A , B , a, and b are used. SGET52 also tests the normalization of E. Each eigenvector is supposed to be normalized so that the maximum 'absolute value' of its elements is 1, where in this case, 'absolute value' of a complex value x is |Re(x)| + |Im(x)| ; let us call this maximum 'absolute value' norm of a vector v M(v). if a(j)=b(j)=0, then the eigenvector is set to be the jth coordinate vector. The normalization test is: RESULT(2) = max | M(v(j)) - 1 | / ( n ulp ) eigenvectors v(j) Parameters LEFT LEFT is LOGICAL =.TRUE.: The eigenvectors in the columns of E are assumed to be *left* eigenvectors. =.FALSE.: The eigenvectors in the columns of E are assumed to be *right* eigenvectors. N N is INTEGER The size of the matrices. If it is zero, SGET52 does nothing. It must be at least zero. A A is REAL array, dimension (LDA, N) The matrix A. LDA LDA is INTEGER The leading dimension of A. It must be at least 1 and at least N. B B is REAL array, dimension (LDB, N) The matrix B. LDB LDB is INTEGER The leading dimension of B. It must be at least 1 and at least N. E E is REAL array, dimension (LDE, N) The matrix of eigenvectors. It must be O( 1 ). Complex eigenvalues and eigenvectors always come in pairs, the eigenvalue and its conjugate being stored in adjacent elements of ALPHAR, ALPHAI, and BETA. Thus, if a(j)/b(j) and a(j+1)/b(j+1) are a complex conjugate pair of generalized eigenvalues, then E(,j) contains the real part of the eigenvector and E(,j+1) contains the imaginary part. Note that whether E(,j) is a real eigenvector or part of a complex one is specified by whether ALPHAI(j) is zero or not. LDE LDE is INTEGER The leading dimension of E. It must be at least 1 and at least N. ALPHAR ALPHAR is REAL array, dimension (N) The real parts of the values a(j) as described above, which, along with b(j), define the generalized eigenvalues. Complex eigenvalues always come in complex conjugate pairs a(j)/b(j) and a(j+1)/b(j+1), which are stored in adjacent elements in ALPHAR, ALPHAI, and BETA. Thus, if the j-th and (j+1)-st eigenvalues form a pair, ALPHAR(j+1)/BETA(j+1) is assumed to be equal to ALPHAR(j)/BETA(j). ALPHAI ALPHAI is REAL array, dimension (N) The imaginary parts of the values a(j) as described above, which, along with b(j), define the generalized eigenvalues. If ALPHAI(j)=0, then the eigenvalue is real, otherwise it is part of a complex conjugate pair. Complex eigenvalues always come in complex conjugate pairs a(j)/b(j) and a(j+1)/b(j+1), which are stored in adjacent elements in ALPHAR, ALPHAI, and BETA. Thus, if the j-th and (j+1)-st eigenvalues form a pair, ALPHAI(j+1)/BETA(j+1) is assumed to be equal to -ALPHAI(j)/BETA(j). Also, nonzero values in ALPHAI are assumed to always come in adjacent pairs. BETA BETA is REAL array, dimension (N) The values b(j) as described above, which, along with a(j), define the generalized eigenvalues. WORK WORK is REAL array, dimension (N**2+N) RESULT RESULT is REAL array, dimension (2) The values computed by the test described above. If A E or B E is likely to overflow, then RESULT(1:2) is set to 10 / ulp. Author Univ. of Tennessee Univ. of California Berkeley Univ. of Colorado Denver NAG Ltd. Definition at line 197 of file sget52.f. Author Generated automatically by Doxygen for LAPACK from the source code. LAPACK Version 3.12.0 TESTING/EIG/sget52.f(3)