cget243
Part of cget24.f(3).
Usage
Functions/Subroutines
CGET24
Function/Subroutine Documentation
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
Purpose:
!> !> 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. !>
Parameters
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 !>
JTYPE
!> JTYPE is INTEGER !> Type of input matrix. Used to label output if error occurs. !>
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.
!>
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.
!>
NOUNIT
!> NOUNIT is INTEGER !> The FORTRAN unit number for printing out error messages !> (e.g., if a routine returns INFO not equal to 0.) !>
N
!> N is INTEGER !> The dimension of A. N must be at least 0. !>
A
!> A is COMPLEX array, dimension (LDA, N) !> Used to hold the matrix whose eigenvalues are to be !> computed. !>
LDA
!> LDA is INTEGER !> The leading dimension of A, and H. LDA must be at !> least 1 and at least N. !>
H
!> H is COMPLEX array, dimension (LDA, N) !> Another copy of the test matrix A, modified by CGEESX. !>
HT
!> HT is COMPLEX array, dimension (LDA, N) !> Yet another copy of the test matrix A, modified by CGEESX. !>
W
!> W is COMPLEX array, dimension (N) !> The computed eigenvalues of A. !>
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 !>
WTMP
!> WTMP is COMPLEX array, dimension (N) !> Like W, this array contains the eigenvalues of A, !> but sorted by increasing real or imaginary part. !>
VS
!> VS is COMPLEX array, dimension (LDVS, N) !> VS holds the computed Schur vectors. !>
LDVS
!> LDVS is INTEGER !> Leading dimension of VS. Must be at least max(1, N). !>
VS1
!> VS1 is COMPLEX array, dimension (LDVS, N) !> VS1 holds another copy of the computed Schur vectors. !>
RCDEIN
!> RCDEIN is REAL !> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal !> condition number for the average of selected eigenvalues. !>
RCDVIN
!> RCDVIN is REAL !> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal !> condition number for the selected right invariant subspace. !>
NSLCT
!> NSLCT is INTEGER !> When COMP = .TRUE. the number of selected eigenvalues !> corresponding to the precomputed values RCDEIN and RCDVIN. !>
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. !>
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. !>
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. !>
WORK
!> WORK is COMPLEX array, dimension (2*N*N) !>
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. !>
RWORK
!> RWORK is REAL array, dimension (N) !>
BWORK
!> BWORK is LOGICAL array, dimension (N) !>
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. !>
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Definition at line 331 of file cget24.f.