.TH "TESTING/EIG/zdrvev.f" 3 "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME TESTING/EIG/zdrvev.f .SH SYNOPSIS .br .PP .SS "Functions/Subroutines" .in +1c .ti -1c .RI "subroutine \fBzdrvev\fP (nsizes, nn, ntypes, dotype, iseed, thresh, nounit, a, lda, h, w, w1, vl, ldvl, vr, ldvr, lre, ldlre, result, work, nwork, rwork, iwork, info)" .br .RI "\fBZDRVEV\fP " .in -1c .SH "Function/Subroutine Documentation" .PP .SS "subroutine zdrvev (integer nsizes, integer, dimension( * ) nn, integer ntypes, logical, dimension( * ) dotype, integer, dimension( 4 ) iseed, double precision thresh, integer nounit, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( lda, * ) h, complex*16, dimension( * ) w, complex*16, dimension( * ) w1, complex*16, dimension( ldvl, * ) vl, integer ldvl, complex*16, dimension( ldvr, * ) vr, integer ldvr, complex*16, dimension( ldlre, * ) lre, integer ldlre, double precision, dimension( 7 ) result, complex*16, dimension( * ) work, integer nwork, double precision, dimension( * ) rwork, integer, dimension( * ) iwork, integer info)" .PP \fBZDRVEV\fP .PP \fBPurpose:\fP .RS 4 .PP .nf ZDRVEV checks the nonsymmetric eigenvalue problem driver ZGEEV\&. When ZDRVEV is called, a number of matrix 'sizes' ('n's') and a number of matrix 'types' are specified\&. For each size ('n') and each type of matrix, one matrix will be generated and used to test the nonsymmetric eigenroutines\&. For each matrix, 7 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 whether largest component real VR(i) denotes the i-th column of VR\&. (4) | |VL(i)| - 1 | / ulp and whether largest component real VL(i) denotes the i-th column of VL\&. (5) W(full) = W(partial) W(full) denotes the eigenvalues computed when both VR and VL are also computed, and W(partial) denotes the eigenvalues computed when only W, only W and VR, or only W and VL are computed\&. (6) VR(full) = VR(partial) VR(full) denotes the right eigenvectors computed when both VR and VL are computed, and VR(partial) denotes the result when only VR is computed\&. (7) VL(full) = VL(partial) VL(full) denotes the left eigenvectors computed when both VR and VL are also computed, and VL(partial) denotes the result when only VL is computed\&. The 'sizes' are specified by an array NN(1:NSIZES); the value of each element NN(j) specifies one size\&. The 'types' are specified by a logical array DOTYPE( 1:NTYPES ); if DOTYPE(j) is \&.TRUE\&., then matrix type 'j' will be generated\&. Currently, the list of possible types is: (1) The zero matrix\&. (2) The identity matrix\&. (3) A (transposed) Jordan block, with 1's on the diagonal\&. (4) A diagonal matrix with evenly spaced entries 1, \&.\&.\&., ULP and random complex angles\&. (ULP = (first number larger than 1) - 1 ) (5) A diagonal matrix with geometrically spaced entries 1, \&.\&.\&., ULP and random complex angles\&. (6) A diagonal matrix with 'clustered' entries 1, ULP, \&.\&.\&., ULP and random complex angles\&. (7) Same as (4), but multiplied by a constant near the overflow threshold (8) Same as (4), but multiplied by a constant near the underflow threshold (9) A matrix of the form U' T U, where U is unitary and T has evenly spaced entries 1, \&.\&.\&., ULP with random complex angles on the diagonal and random O(1) entries in the upper triangle\&. (10) A matrix of the form U' T U, where U is unitary and T has geometrically spaced entries 1, \&.\&.\&., ULP with random complex angles on the diagonal and random O(1) entries in the upper triangle\&. (11) A matrix of the form U' T U, where U is unitary and T has 'clustered' entries 1, ULP,\&.\&.\&., ULP with random complex angles on the diagonal and random O(1) entries in the upper triangle\&. (12) A matrix of the form U' T U, where U is unitary and T has complex eigenvalues randomly chosen from ULP < |z| < 1 and random O(1) entries in the upper triangle\&. (13) A matrix of the form X' T X, where X has condition SQRT( ULP ) and T has evenly spaced entries 1, \&.\&.\&., ULP with random complex angles on the diagonal and random O(1) entries in the upper triangle\&. (14) A matrix of the form X' T X, where X has condition SQRT( ULP ) and T has geometrically spaced entries 1, \&.\&.\&., ULP with random complex angles on the diagonal and random O(1) entries in the upper triangle\&. (15) A matrix of the form X' T X, where X has condition SQRT( ULP ) and T has 'clustered' entries 1, ULP,\&.\&.\&., ULP with random complex angles on the diagonal and random O(1) entries in the upper triangle\&. (16) A matrix of the form X' T X, where X has condition SQRT( ULP ) and T has complex eigenvalues randomly chosen from ULP < |z| < 1 and random O(1) entries in the upper triangle\&. (17) Same as (16), but multiplied by a constant near the overflow threshold (18) Same as (16), but multiplied by a constant near the underflow threshold (19) Nonsymmetric matrix with random entries chosen from |z| < 1 If N is at least 4, all entries in first two rows and last row, and first column and last two columns are zero\&. (20) Same as (19), but multiplied by a constant near the overflow threshold (21) Same as (19), but multiplied by a constant near the underflow threshold .fi .PP .RE .PP \fBParameters\fP .RS 4 \fINSIZES\fP .PP .nf NSIZES is INTEGER The number of sizes of matrices to use\&. If it is zero, ZDRVEV does nothing\&. It must be at least zero\&. .fi .PP .br \fINN\fP .PP .nf NN is INTEGER array, dimension (NSIZES) An array containing the sizes to be used for the matrices\&. Zero values will be skipped\&. The values must be at least zero\&. .fi .PP .br \fINTYPES\fP .PP .nf NTYPES is INTEGER The number of elements in DOTYPE\&. If it is zero, ZDRVEV does nothing\&. It must be at least zero\&. If it is MAXTYP+1 and NSIZES is 1, then an additional type, MAXTYP+1 is defined, which is to use whatever matrix is in A\&. This is only useful if DOTYPE(1:MAXTYP) is \&.FALSE\&. and DOTYPE(MAXTYP+1) is \&.TRUE\&. \&. .fi .PP .br \fIDOTYPE\fP .PP .nf DOTYPE is LOGICAL array, dimension (NTYPES) If DOTYPE(j) is \&.TRUE\&., then for each size in NN a matrix of that size and of type j will be generated\&. If NTYPES is smaller than the maximum number of types defined (PARAMETER MAXTYP), then types NTYPES+1 through MAXTYP will not be generated\&. If NTYPES is larger than MAXTYP, DOTYPE(MAXTYP+1) through DOTYPE(NTYPES) will be ignored\&. .fi .PP .br \fIISEED\fP .PP .nf ISEED is INTEGER array, dimension (4) On entry ISEED specifies the seed of the random number generator\&. The array elements should be between 0 and 4095; if not they will be reduced mod 4096\&. Also, ISEED(4) must be odd\&. The random number generator uses a linear congruential sequence limited to small integers, and so should produce machine independent random numbers\&. The values of ISEED are changed on exit, and can be used in the next call to ZDRVEV to continue the same random number sequence\&. .fi .PP .br \fITHRESH\fP .PP .nf THRESH is DOUBLE PRECISION A test will count as 'failed' if the 'error', 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\&. .fi .PP .br \fINOUNIT\fP .PP .nf NOUNIT is INTEGER The FORTRAN unit number for printing out error messages (e\&.g\&., if a routine returns INFO not equal to 0\&.) .fi .PP .br \fIA\fP .PP .nf A is COMPLEX*16 array, dimension (LDA, max(NN)) Used to hold the matrix whose eigenvalues are to be computed\&. On exit, A contains the last matrix actually used\&. .fi .PP .br \fILDA\fP .PP .nf LDA is INTEGER The leading dimension of A, and H\&. LDA must be at least 1 and at least max(NN)\&. .fi .PP .br \fIH\fP .PP .nf H is COMPLEX*16 array, dimension (LDA, max(NN)) Another copy of the test matrix A, modified by ZGEEV\&. .fi .PP .br \fIW\fP .PP .nf W is COMPLEX*16 array, dimension (max(NN)) The eigenvalues of A\&. On exit, W are the eigenvalues of the matrix in A\&. .fi .PP .br \fIW1\fP .PP .nf W1 is COMPLEX*16 array, dimension (max(NN)) Like W, this array contains the eigenvalues of A, but those computed when ZGEEV only computes a partial eigendecomposition, i\&.e\&. not the eigenvalues and left and right eigenvectors\&. .fi .PP .br \fIVL\fP .PP .nf VL is COMPLEX*16 array, dimension (LDVL, max(NN)) VL holds the computed left eigenvectors\&. .fi .PP .br \fILDVL\fP .PP .nf LDVL is INTEGER Leading dimension of VL\&. Must be at least max(1,max(NN))\&. .fi .PP .br \fIVR\fP .PP .nf VR is COMPLEX*16 array, dimension (LDVR, max(NN)) VR holds the computed right eigenvectors\&. .fi .PP .br \fILDVR\fP .PP .nf LDVR is INTEGER Leading dimension of VR\&. Must be at least max(1,max(NN))\&. .fi .PP .br \fILRE\fP .PP .nf LRE is COMPLEX*16 array, dimension (LDLRE, max(NN)) LRE holds the computed right or left eigenvectors\&. .fi .PP .br \fILDLRE\fP .PP .nf LDLRE is INTEGER Leading dimension of LRE\&. Must be at least max(1,max(NN))\&. .fi .PP .br \fIRESULT\fP .PP .nf RESULT is DOUBLE PRECISION array, dimension (7) The values computed by the seven tests described above\&. The values are currently limited to 1/ulp, to avoid overflow\&. .fi .PP .br \fIWORK\fP .PP .nf WORK is COMPLEX*16 array, dimension (NWORK) .fi .PP .br \fINWORK\fP .PP .nf NWORK is INTEGER The number of entries in WORK\&. This must be at least 5*NN(j)+2*NN(j)**2 for all j\&. .fi .PP .br \fIRWORK\fP .PP .nf RWORK is DOUBLE PRECISION array, dimension (2*max(NN)) .fi .PP .br \fIIWORK\fP .PP .nf IWORK is INTEGER array, dimension (max(NN)) .fi .PP .br \fIINFO\fP .PP .nf INFO is INTEGER If 0, then everything ran OK\&. -1: NSIZES < 0 -2: Some NN(j) < 0 -3: NTYPES < 0 -6: THRESH < 0 -9: LDA < 1 or LDA < NMAX, where NMAX is max( NN(j) )\&. -14: LDVL < 1 or LDVL < NMAX, where NMAX is max( NN(j) )\&. -16: LDVR < 1 or LDVR < NMAX, where NMAX is max( NN(j) )\&. -18: LDLRE < 1 or LDLRE < NMAX, where NMAX is max( NN(j) )\&. -21: NWORK too small\&. If ZLATMR, CLATMS, CLATME or ZGEEV returns an error code, the absolute value of it is returned\&. ----------------------------------------------------------------------- Some Local Variables and Parameters: ---- ----- --------- --- ---------- ZERO, ONE Real 0 and 1\&. MAXTYP The number of types defined\&. NMAX Largest value in NN\&. NERRS The number of tests which have exceeded THRESH COND, CONDS, IMODE Values to be passed to the matrix generators\&. ANORM Norm of A; passed to matrix generators\&. OVFL, UNFL Overflow and underflow thresholds\&. ULP, ULPINV Finest relative precision and its inverse\&. RTULP, RTULPI Square roots of the previous 4 values\&. The following four arrays decode JTYPE: KTYPE(j) The general type (1-10) for type 'j'\&. KMODE(j) The MODE value to be passed to the matrix generator for type 'j'\&. KMAGN(j) The order of magnitude ( O(1), O(overflow^(1/2) ), O(underflow^(1/2) ) KCONDS(j) Selectw whether CONDS is to be 1 or 1/sqrt(ulp)\&. (0 means irrelevant\&.) .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP .PP Definition at line \fB387\fP of file \fBzdrvev\&.f\fP\&. .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.