TESTING/EIG/sdrvsx.f(3)
๐ TESTING/EIG/sdrvsx.f(3) โ Library Functions Manual ๐
๐ NAME ๐
TESTING/EIG/sdrvsx.f
โจ SYNOPSIS โจ
๐ธ Functions/Subroutines ๐ธ
subroutine sdrvsx (nsizes, nn, ntypes, dotype, iseed, thresh, niunit,
nounit, a, lda, h, ht, wr, wi, wrt, wit, wrtmp, witmp, vs, ldvs,
vs1, result, work, lwork, iwork, bwork, info)
SDRVSX
๐ฆ Function/Subroutine Documentation ๐ฆ
subroutine sdrvsx (integer nsizes, integer, dimension( * ) nn, integer
ntypes, logical, dimension( * ) dotype, integer, dimension( 4 ) iseed,
real thresh, integer niunit, integer nounit, real, dimension( lda, * )
a, integer lda, real, dimension( lda, * ) h, real, dimension( lda, * )
ht, real, dimension( * ) wr, real, dimension( * ) wi, real, dimension( *
) wrt, real, dimension( * ) wit, real, dimension( * ) wrtmp, real,
dimension( * ) witmp, real, dimension( ldvs, * ) vs, integer ldvs, real,
dimension( ldvs, * ) vs1, real, dimension( 17 ) result, real, dimension(
* ) work, integer lwork, integer, dimension( * ) iwork, logical,
dimension( * ) bwork, integer info)
SDRVSX
โจ Purpose โจ
okay bestie, gather round, because SDRVSX is lowkey the vibe check for the nonsymmetric eigenvalue (Schur form) problem expert driver SGEESX. no cap, this is the routine that says โbestie, letโs test this thing properlyโ ๐
SDRVSX uses both test matrices generated randomly depending on data supplied in the calling sequence, as well as on data read from an input file and including precomputed condition numbers to which it compares the ones it computes. itโs giving โrandom chaos meets precomputed receiptsโ โจ
When SDRVSX is called, a number of matrix () and a number of matrix are specified. For each size () and each type of matrix, one matrix will be generated and used to test the nonsymmetric eigenroutines. For each matrix, 15 tests will be performed:
- Test (1):
0ifTis in Schur form,1/ulpotherwise (no sorting of eigenvalues). - Test (2):
| A - VS T VS' | / ( n |A| ulp ). HereVSis the matrix of Schur eigenvectors, andTis in Schur form (no sorting of eigenvalues). - Test (3):
| I - VS VS' | / ( n ulp )(no sorting of eigenvalues). - Test (4):
0ifWR+sqrt(-1)*WIare eigenvalues ofT,1/ulpotherwise (no sorting of eigenvalues). - Test (5):
0ifT(with VS) = T(without VS),1/ulpotherwise (no sorting of eigenvalues). - Test (6):
0ifeigenvalues(with VS) = eigenvalues(without VS),1/ulpotherwise (no sorting of eigenvalues). - Test (7):
0ifTis in Schur form,1/ulpotherwise (with sorting of eigenvalues). - Test (8):
| A - VS T VS' | / ( n |A| ulp ). HereVSis the matrix of Schur eigenvectors, andTis in Schur form (with sorting of eigenvalues). - Test (9):
| I - VS VS' | / ( n ulp )(with sorting of eigenvalues). - Test (10):
0ifWR+sqrt(-1)*WIare eigenvalues ofT,1/ulpotherwise. If workspace sufficient, also compareWR,WIwith and without reciprocal condition numbers (with sorting of eigenvalues). - Test (11):
0ifT(with VS) = T(without VS),1/ulpotherwise. If workspace sufficient, also compareTwith and without reciprocal condition numbers (with sorting of eigenvalues). - Test (12):
0ifeigenvalues(with VS) = eigenvalues(without VS),1/ulpotherwise. If workspace sufficient, also compareVSwith and without reciprocal condition numbers (with sorting of eigenvalues). - Test (13): if sorting worked and
SDIMis the number of eigenvalues which wereSELECTed. If workspace sufficient, also compareSDIMwith and without reciprocal condition numbers. - Test (14): if
RCONDEthe same no matter ifVSand/orRCONDVcomputed. - Test (15): if
RCONDVthe same no matter ifVSand/orRCONDEcomputed.
The are specified by an array NN(1:NSIZES); the value of each element NN(j) specifies one size. The are specified by a logical array DOTYPE( 1:NTYPES ); if DOTYPE(j) is .TRUE., then matrix type will be generated. Currently, the list of possible types is:
- The zero matrix.
- The identity matrix.
- A (transposed) Jordan block, with
1's on the diagonal. - A diagonal matrix with evenly spaced entries
1, ..., ULPand random signs. (ULP = (first number larger than 1) - 1) - A diagonal matrix with geometrically spaced entries
1, ..., ULPand random signs. - A diagonal matrix with entries
1, ULP, ..., ULPand random signs. - Same as (4), but multiplied by a constant near the overflow threshold.
- Same as (4), but multiplied by a constant near the underflow threshold.
- A matrix of the form
U' T U, whereUis orthogonal andThas evenly spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle. - A matrix of the form
U' T U, whereUis orthogonal andThas geometrically spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle. - A matrix of the form
U' T U, whereUis orthogonal andThas entries1, ULP,..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle. - A matrix of the form
U' T U, whereUis orthogonal andThas real or complex conjugate paired eigenvalues randomly chosen from( ULP, 1 )and randomO(1)entries in the upper triangle. - A matrix of the form
X' T X, whereXhas conditionSQRT( ULP )andThas evenly spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle. - A matrix of the form
X' T X, whereXhas conditionSQRT( ULP )andThas geometrically spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle. - A matrix of the form
X' T X, whereXhas conditionSQRT( ULP )andThas entries1, ULP,..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle. - A matrix of the form
X' T X, whereXhas conditionSQRT( ULP )andThas real or complex conjugate paired eigenvalues randomly chosen from( ULP, 1 )and randomO(1)entries in the upper triangle. - Same as (16), but multiplied by a constant near the overflow threshold.
- Same as (16), but multiplied by a constant near the underflow threshold.
- Nonsymmetric matrix with random entries chosen from
(-1,1). IfNis at least4, all entries in first two rows and last row, and first column and last two columns are zero. - Same as (19), but multiplied by a constant near the overflow threshold.
- Same as (19), but multiplied by a constant near the underflow threshold.
In addition, an input file will be read from logical unit number NIUNIT. The file contains matrices along with precomputed eigenvalues and reciprocal condition numbers for the eigenvalue average and right invariant subspace. For these matrices, in addition to tests (1) to (15) we will compute the following two tests:
Test (16): |RCONDE - RCDEIN| / cond(RCONDE)
RCONDE is the reciprocal average eigenvalue condition number computed by SGEESX 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.
Test (17): |RCONDV - RCDVIN| / cond(RCONDV)
RCONDV is the reciprocal right invariant subspace condition number computed by SGEESX 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 ๐
NSIZESโNSIZESisINTEGER. The number of sizes of matrices to use.NSIZESmust be at least zero. If it is zero, no randomly generated matrices are tested, but any test matrices read fromNIUNITwill be tested.NNโNNisINTEGER 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.NTYPESโNTYPESisINTEGER. The number of elements inDOTYPE.NTYPESmust be at least zero. If it is zero, no randomly generated test matrices are tested, but and test matrices read fromNIUNITwill be tested. If it isMAXTYP+1andNSIZESis1, then an additional type,MAXTYP+1is defined, which is to use whatever matrix is inA. This is only useful ifDOTYPE(1:MAXTYP)is.FALSE.andDOTYPE(MAXTYP+1)is.TRUE..DOTYPEDOTYPEโ okay soDOTYPEis aLOGICALarray, dimension(NTYPES). IfDOTYPE(j)is.TRUE., then for each size inNNa matrix of that size and of typejwill be generated. IfNTYPESis smaller than the maximum number of types defined (PARAMETER MAXTYP), then typesNTYPES+1throughMAXTYPwill not be generated. IfNTYPESis larger thanMAXTYP,DOTYPE(MAXTYP+1)throughDOTYPE(NTYPES)will be ignored. ๐ISEEDโISEEDisINTEGERarray, dimension(4). On entryISEEDspecifies the seed of the random number generator. The array elements should be between0and4095; if not they will be reduced mod4096. 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 ofISEEDare changed on exit, and can be used in the next call toSDRVSXto continue the same random number sequence. ๐ฒTHRESHโTHRESHisREAL. A test will count as [blank in the original] if the [blank in the original] computed as described above exceedsTHRESH. Note that the error is scaled to beO(1), soTHRESHshould be a reasonably small multiple of 1, e.g.,10or100. In particular, it should not depend on the precision (single vs. double) or the size of the matrix. It must be at least zero. โ ๏ธNIUNITโNIUNITisINTEGER. TheFORTRANunit number for reading in the data file of problems to solve. ๐ฅNOUNITโNOUNITisINTEGER. TheFORTRANunit number for printing out error messages (e.g., if a routine returnsINFOnot equal to0.) ๐คAโAisREALarray, dimension(LDA, max(NN)). Used to hold the matrix whose eigenvalues are to be computed. On exit,Acontains the last matrix actually used. โจLDAโLDAisINTEGER. The leading dimension ofA, andH.LDAmust be at least1and at leastmax( NN ). ๐HโHisREALarray, dimension(LDA, max(NN)). Another copy of the test matrixA, modified bySGEESX. ๐HTโHTisREALarray, dimension(LDA, max(NN)). Yet another copy of the test matrixA, modified bySGEESX. ๐ช๏ธWRโWRisREALarray, dimension(max(NN)). ๐WIโWIisREALarray, dimension(max(NN)). Together withWR, these are the real and imaginary parts of the eigenvalues ofA. On exit,WR + WI*iare the eigenvalues of the matrix inA. ๐ซWRTโWRTisREALarray, dimension(max(NN)). ๐WITโWITisREALarray, dimension(max(NN)). LikeWR,WI, these arrays contain the eigenvalues ofA, but those computed whenSGEESXonly computes a partial eigendecomposition, i.e. not Schur vectors. ๐ฆWRTMPโWRTMPisREALarray, dimension(max(NN)). ๐ธWITMPโWITMPisREALarray, dimension(max(NN)). More temporary storage for eigenvalues. ๐งบVSโVSisREALarray, dimension(LDVS, max(NN)).VSholds the computed Schur vectors. ๐LDVSโLDVSisINTEGER. Leading dimension ofVS. Must be at leastmax(1,max(NN)). ๐VS1โVS1isREALarray, dimension(LDVS, max(NN)).VS1holds another copy of the computed Schur vectors. ๐ชRESULTโRESULTisREALarray, dimension(17). The values computed by the17tests described above. The values are currently limited to1/ulp, to avoid overflow. ๐ฅWORKโWORKisREALarray, dimension(LWORK). ๐ ๏ธLWORKโLWORKisINTEGER. The number of entries inWORK. This must be at leastmax(3*NN(j),2*NN(j)**2)for allj. ๐งฎIWORKโIWORKisINTEGERarray, dimension(max(NN)*max(NN)). ๐งฑBWORKโBWORKisLOGICALarray, dimension(max(NN)). ๐ชINFOโINFOisINTEGER. If0, successful exit.<0, input parameter-INFOis incorrect.>0,SLATMR,SLATMS,SLATMEorSGET24returned an error code andINFOis its absolute value. ๐จ
Some Local Variables and Parameters ๐
ZERO,ONEโ Real0and1.MAXTYPโ The number of types defined.NMAXโ Largest value inNN.NERRSโ The number of tests which have exceededTHRESHCOND,CONDS,IMODEโ Values to be passed to the matrix generators.ANORMโ Norm ofA; passed to matrix generators.OVFL,UNFLโ Overflow and underflow thresholds.ULP,ULPINVโ Finest relative precision and its inverse.RTULP,RTULPIโ Square roots of the previous4values.
The following four arrays decode JTYPE:
KTYPE(j)โ The general type (1-10) for type [blank].KMODE(j)โ TheMODEvalue to be passed to the matrix generator for type [blank].KMAGN(j)โ The order of magnitude (O(1),O(overflow^(1/2) ),O(underflow^(1/2) ))KCONDS(j)โ Selectw whetherCONDSis to be1or1/sqrt(ulp). (0means irrelevant.)
Author ๐ซถ
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 450 of file sdrvsx.f.
Author ๐ค
Generated automatically by Doxygen for LAPACK from the source code.
Okay that's the whole page, bestie โ from TESTING/EIG/sdrvsx.f(3), LAPACK Version 3.12.0, and the footer's date is MIA so we're just gonna vibe with the version. Byeee! ๐โจ
๐ฆ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 ยท custom
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms