LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine cget24 | ( | logical | comp, |
integer | jtype, | ||
real | thresh, | ||
integer, dimension( 4 ) | iseed, | ||
integer | nounit, | ||
integer | n, | ||
complex, dimension( lda, * ) | a, | ||
integer | lda, | ||
complex, dimension( lda, * ) | h, | ||
complex, dimension( lda, * ) | ht, | ||
complex, dimension( * ) | w, | ||
complex, dimension( * ) | wt, | ||
complex, dimension( * ) | wtmp, | ||
complex, dimension( ldvs, * ) | vs, | ||
integer | ldvs, | ||
complex, dimension( ldvs, * ) | vs1, | ||
real | rcdein, | ||
real | rcdvin, | ||
integer | nslct, | ||
integer, dimension( * ) | islct, | ||
integer | isrt, | ||
real, dimension( 17 ) | result, | ||
complex, dimension( * ) | work, | ||
integer | lwork, | ||
real, dimension( * ) | rwork, | ||
logical, dimension( * ) | bwork, | ||
integer | info ) |
CGET24
!> !> CGET24 checks the nonsymmetric eigenvalue (Schur form) problem !> expert driver CGEESX. !> !> If COMP = .FALSE., the first 13 of the following tests will be !> be performed on the input matrix A, and also tests 14 and 15 !> if LWORK is sufficiently large. !> If COMP = .TRUE., all 17 test will be performed. !> !> (1) 0 if T is in Schur form, 1/ulp otherwise !> (no sorting of eigenvalues) !> !> (2) | A - VS T VS' | / ( n |A| ulp ) !> !> Here VS is the matrix of Schur eigenvectors, and T is in Schur !> form (no sorting of eigenvalues). !> !> (3) | I - VS VS' | / ( n ulp ) (no sorting of eigenvalues). !> !> (4) 0 if W are eigenvalues of T !> 1/ulp otherwise !> (no sorting of eigenvalues) !> !> (5) 0 if T(with VS) = T(without VS), !> 1/ulp otherwise !> (no sorting of eigenvalues) !> !> (6) 0 if eigenvalues(with VS) = eigenvalues(without VS), !> 1/ulp otherwise !> (no sorting of eigenvalues) !> !> (7) 0 if T is in Schur form, 1/ulp otherwise !> (with sorting of eigenvalues) !> !> (8) | A - VS T VS' | / ( n |A| ulp ) !> !> Here VS is the matrix of Schur eigenvectors, and T is in Schur !> form (with sorting of eigenvalues). !> !> (9) | I - VS VS' | / ( n ulp ) (with sorting of eigenvalues). !> !> (10) 0 if W are eigenvalues of T !> 1/ulp otherwise !> If workspace sufficient, also compare W with and !> without reciprocal condition numbers !> (with sorting of eigenvalues) !> !> (11) 0 if T(with VS) = T(without VS), !> 1/ulp otherwise !> If workspace sufficient, also compare T with and without !> reciprocal condition numbers !> (with sorting of eigenvalues) !> !> (12) 0 if eigenvalues(with VS) = eigenvalues(without VS), !> 1/ulp otherwise !> If workspace sufficient, also compare VS with and without !> reciprocal condition numbers !> (with sorting of eigenvalues) !> !> (13) if sorting worked and SDIM is the number of !> eigenvalues which were SELECTed !> If workspace sufficient, also compare SDIM with and !> without reciprocal condition numbers !> !> (14) if RCONDE the same no matter if VS and/or RCONDV computed !> !> (15) if RCONDV the same no matter if VS and/or RCONDE computed !> !> (16) |RCONDE - RCDEIN| / cond(RCONDE) !> !> RCONDE is the reciprocal average eigenvalue condition number !> computed by CGEESX 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. !> !> (17) |RCONDV - RCDVIN| / cond(RCONDV) !> !> RCONDV is the reciprocal right invariant subspace condition !> number computed by CGEESX 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. !>
[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] | JTYPE | !> JTYPE is INTEGER !> Type of input matrix. Used to label output if error occurs. !> |
[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] | 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] | 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 CGEESX. !> |
[out] | HT | !> HT is COMPLEX array, dimension (LDA, N) !> Yet another copy of the test matrix A, modified by CGEESX. !> |
[out] | W | !> W is COMPLEX array, dimension (N) !> The computed eigenvalues of A. !> |
[out] | WT | !> WT is COMPLEX array, dimension (N) !> Like W, this array contains the eigenvalues of A, !> but those computed when CGEESX only computes a partial !> eigendecomposition, i.e. not Schur vectors !> |
[out] | WTMP | !> WTMP is COMPLEX array, dimension (N) !> Like W, this array contains the eigenvalues of A, !> but sorted by increasing real or imaginary part. !> |
[out] | VS | !> VS is COMPLEX array, dimension (LDVS, N) !> VS holds the computed Schur vectors. !> |
[in] | LDVS | !> LDVS is INTEGER !> Leading dimension of VS. Must be at least max(1, N). !> |
[out] | VS1 | !> VS1 is COMPLEX array, dimension (LDVS, N) !> VS1 holds another copy of the computed Schur vectors. !> |
[in] | RCDEIN | !> RCDEIN is REAL !> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal !> condition number for the average of selected eigenvalues. !> |
[in] | RCDVIN | !> RCDVIN is REAL !> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal !> condition number for the selected right invariant subspace. !> |
[in] | NSLCT | !> NSLCT is INTEGER !> When COMP = .TRUE. the number of selected eigenvalues !> corresponding to the precomputed values RCDEIN and RCDVIN. !> |
[in] | ISLCT | !> ISLCT is INTEGER array, dimension (NSLCT) !> When COMP = .TRUE. ISLCT selects the eigenvalues of the !> input matrix corresponding to the precomputed values RCDEIN !> and RCDVIN. For I=1, ... ,NSLCT, if ISLCT(I) = J, then the !> eigenvalue with the J-th largest real or imaginary part is !> selected. The real part is used if ISRT = 0, and the !> imaginary part if ISRT = 1. !> Not referenced if COMP = .FALSE. !> |
[in] | ISRT | !> ISRT is INTEGER !> When COMP = .TRUE., ISRT describes how ISLCT is used to !> choose a subset of the spectrum. !> Not referenced if COMP = .FALSE. !> |
[out] | RESULT | !> RESULT is REAL array, dimension (17) !> The values computed by the 17 tests described above. !> The values are currently limited to 1/ulp, to avoid !> overflow. !> |
[out] | WORK | !> WORK is COMPLEX array, dimension (2*N*N) !> |
[in] | LWORK | !> LWORK is INTEGER !> The number of entries in WORK to be passed to CGEESX. This !> must be at least 2*N, and N*(N+1)/2 if tests 14--16 are to !> be performed. !> |
[out] | RWORK | !> RWORK is REAL array, dimension (N) !> |
[out] | BWORK | !> BWORK is LOGICAL array, dimension (N) !> |
[out] | INFO | !> INFO is INTEGER !> If 0, successful exit. !> If <0, input parameter -INFO had an incorrect value. !> If >0, CGEESX returned an error code, the absolute !> value of which is returned. !> |
Definition at line 331 of file cget24.f.