LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine cget23 | ( | logical | comp, |
integer | isrt, | ||
character | balanc, | ||
integer | jtype, | ||
real | thresh, | ||
integer, dimension( 4 ) | iseed, | ||
integer | nounit, | ||
integer | n, | ||
complex, dimension( lda, * ) | a, | ||
integer | lda, | ||
complex, dimension( lda, * ) | h, | ||
complex, dimension( * ) | w, | ||
complex, dimension( * ) | w1, | ||
complex, dimension( ldvl, * ) | vl, | ||
integer | ldvl, | ||
complex, dimension( ldvr, * ) | vr, | ||
integer | ldvr, | ||
complex, dimension( ldlre, * ) | lre, | ||
integer | ldlre, | ||
real, dimension( * ) | rcondv, | ||
real, dimension( * ) | rcndv1, | ||
real, dimension( * ) | rcdvin, | ||
real, dimension( * ) | rconde, | ||
real, dimension( * ) | rcnde1, | ||
real, dimension( * ) | rcdein, | ||
real, dimension( * ) | scale, | ||
real, dimension( * ) | scale1, | ||
real, dimension( 11 ) | result, | ||
complex, dimension( * ) | work, | ||
integer | lwork, | ||
real, dimension( * ) | rwork, | ||
integer | info ) |
CGET23
!> !> CGET23 checks the nonsymmetric eigenvalue problem driver CGEEVX. !> If COMP = .FALSE., the first 8 of the following tests will be !> performed on the input matrix A, and also test 9 if LWORK is !> sufficiently large. !> if COMP is .TRUE. all 11 tests will be performed. !> !> (1) | A * VR - VR * W | / ( n |A| ulp ) !> !> Here VR is the matrix of unit right eigenvectors. !> W is a diagonal matrix with diagonal entries W(j). !> !> (2) | A**H * VL - VL * W**H | / ( n |A| ulp ) !> !> Here VL is the matrix of unit left eigenvectors, A**H is the !> conjugate transpose of A, and W is as above. !> !> (3) | |VR(i)| - 1 | / ulp and largest component real !> !> VR(i) denotes the i-th column of VR. !> !> (4) | |VL(i)| - 1 | / ulp and largest component real !> !> VL(i) denotes the i-th column of VL. !> !> (5) 0 if W(full) = W(partial), 1/ulp otherwise !> !> W(full) denotes the eigenvalues computed when VR, VL, RCONDV !> and RCONDE are also computed, and W(partial) denotes the !> eigenvalues computed when only some of VR, VL, RCONDV, and !> RCONDE are computed. !> !> (6) 0 if VR(full) = VR(partial), 1/ulp otherwise !> !> VR(full) denotes the right eigenvectors computed when VL, RCONDV !> and RCONDE are computed, and VR(partial) denotes the result !> when only some of VL and RCONDV are computed. !> !> (7) 0 if VL(full) = VL(partial), 1/ulp otherwise !> !> VL(full) denotes the left eigenvectors computed when VR, RCONDV !> and RCONDE are computed, and VL(partial) denotes the result !> when only some of VR and RCONDV are computed. !> !> (8) 0 if SCALE, ILO, IHI, ABNRM (full) = !> SCALE, ILO, IHI, ABNRM (partial) !> 1/ulp otherwise !> !> SCALE, ILO, IHI and ABNRM describe how the matrix is balanced. !> (full) is when VR, VL, RCONDE and RCONDV are also computed, and !> (partial) is when some are not computed. !> !> (9) 0 if RCONDV(full) = RCONDV(partial), 1/ulp otherwise !> !> RCONDV(full) denotes the reciprocal condition numbers of the !> right eigenvectors computed when VR, VL and RCONDE are also !> computed. RCONDV(partial) denotes the reciprocal condition !> numbers when only some of VR, VL and RCONDE are computed. !> !> (10) |RCONDV - RCDVIN| / cond(RCONDV) !> !> RCONDV is the reciprocal right eigenvector condition number !> computed by CGEEVX and RCDVIN (the precomputed true value) !> is supplied as input. cond(RCONDV) is the condition number of !> RCONDV, and takes errors in computing RCONDV into account, so !> that the resulting quantity should be O(ULP). cond(RCONDV) is !> essentially given by norm(A)/RCONDE. !> !> (11) |RCONDE - RCDEIN| / cond(RCONDE) !> !> RCONDE is the reciprocal eigenvalue condition number !> computed by CGEEVX and RCDEIN (the precomputed true value) !> is supplied as input. cond(RCONDE) is the condition number !> of RCONDE, and takes errors in computing RCONDE into account, !> so that the resulting quantity should be O(ULP). cond(RCONDE) !> is essentially given by norm(A)/RCONDV. !>
[in] | COMP | !> COMP is LOGICAL !> COMP describes which input tests to perform: !> = .FALSE. if the computed condition numbers are not to !> be tested against RCDVIN and RCDEIN !> = .TRUE. if they are to be compared !> |
[in] | ISRT | !> ISRT is INTEGER !> If COMP = .TRUE., ISRT indicates in how the eigenvalues !> corresponding to values in RCDVIN and RCDEIN are ordered: !> = 0 means the eigenvalues are sorted by !> increasing real part !> = 1 means the eigenvalues are sorted by !> increasing imaginary part !> If COMP = .FALSE., ISRT is not referenced. !> |
[in] | BALANC | !> BALANC is CHARACTER !> Describes the balancing option to be tested. !> = 'N' for no permuting or diagonal scaling !> = 'P' for permuting but no diagonal scaling !> = 'S' for no permuting but diagonal scaling !> = 'B' for permuting and diagonal scaling !> |
[in] | JTYPE | !> JTYPE is INTEGER !> Type of input matrix. Used to label output if error occurs. !> |
[in] | THRESH | !> THRESH is REAL !> A test will count as if the , computed as !> described above, exceeds THRESH. Note that the error !> is scaled to be O(1), so THRESH should be a reasonably !> small multiple of 1, e.g., 10 or 100. In particular, !> it should not depend on the precision (single vs. double) !> or the size of the matrix. It must be at least zero. !> |
[in] | ISEED | !> ISEED is INTEGER array, dimension (4) !> If COMP = .FALSE., the random number generator seed !> used to produce matrix. !> If COMP = .TRUE., ISEED(1) = the number of the example. !> Used to label output if error occurs. !> |
[in] | NOUNIT | !> NOUNIT is INTEGER !> The FORTRAN unit number for printing out error messages !> (e.g., if a routine returns INFO not equal to 0.) !> |
[in] | N | !> N is INTEGER !> The dimension of A. N must be at least 0. !> |
[in,out] | A | !> A is COMPLEX array, dimension (LDA,N) !> Used to hold the matrix whose eigenvalues are to be !> computed. !> |
[in] | LDA | !> LDA is INTEGER !> The leading dimension of A, and H. LDA must be at !> least 1 and at least N. !> |
[out] | H | !> H is COMPLEX array, dimension (LDA,N) !> Another copy of the test matrix A, modified by CGEEVX. !> |
[out] | W | !> W is COMPLEX array, dimension (N) !> Contains the eigenvalues of A. !> |
[out] | W1 | !> W1 is COMPLEX array, dimension (N) !> Like W, this array contains the eigenvalues of A, !> but those computed when CGEEVX only computes a partial !> eigendecomposition, i.e. not the eigenvalues and left !> and right eigenvectors. !> |
[out] | VL | !> VL is COMPLEX array, dimension (LDVL,N) !> VL holds the computed left eigenvectors. !> |
[in] | LDVL | !> LDVL is INTEGER !> Leading dimension of VL. Must be at least max(1,N). !> |
[out] | VR | !> VR is COMPLEX array, dimension (LDVR,N) !> VR holds the computed right eigenvectors. !> |
[in] | LDVR | !> LDVR is INTEGER !> Leading dimension of VR. Must be at least max(1,N). !> |
[out] | LRE | !> LRE is COMPLEX array, dimension (LDLRE,N) !> LRE holds the computed right or left eigenvectors. !> |
[in] | LDLRE | !> LDLRE is INTEGER !> Leading dimension of LRE. Must be at least max(1,N). !> |
[out] | RCONDV | !> RCONDV is REAL array, dimension (N) !> RCONDV holds the computed reciprocal condition numbers !> for eigenvectors. !> |
[out] | RCNDV1 | !> RCNDV1 is REAL array, dimension (N) !> RCNDV1 holds more computed reciprocal condition numbers !> for eigenvectors. !> |
[in] | RCDVIN | !> RCDVIN is REAL array, dimension (N) !> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal !> condition numbers for eigenvectors to be compared with !> RCONDV. !> |
[out] | RCONDE | !> RCONDE is REAL array, dimension (N) !> RCONDE holds the computed reciprocal condition numbers !> for eigenvalues. !> |
[out] | RCNDE1 | !> RCNDE1 is REAL array, dimension (N) !> RCNDE1 holds more computed reciprocal condition numbers !> for eigenvalues. !> |
[in] | RCDEIN | !> RCDEIN is REAL array, dimension (N) !> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal !> condition numbers for eigenvalues to be compared with !> RCONDE. !> |
[out] | SCALE | !> SCALE is REAL array, dimension (N) !> Holds information describing balancing of matrix. !> |
[out] | SCALE1 | !> SCALE1 is REAL array, dimension (N) !> Holds information describing balancing of matrix. !> |
[out] | RESULT | !> RESULT is REAL array, dimension (11) !> The values computed by the 11 tests described above. !> The values are currently limited to 1/ulp, to avoid !> overflow. !> |
[out] | WORK | !> WORK is COMPLEX array, dimension (LWORK) !> |
[in] | LWORK | !> LWORK is INTEGER !> The number of entries in WORK. This must be at least !> 2*N, and 2*N+N**2 if tests 9, 10 or 11 are to be performed. !> |
[out] | RWORK | !> RWORK is REAL array, dimension (2*N) !> |
[out] | INFO | !> INFO is INTEGER !> If 0, successful exit. !> If <0, input parameter -INFO had an incorrect value. !> If >0, CGEEVX returned an error code, the absolute !> value of which is returned. !> |
Definition at line 363 of file cget23.f.