DCHKHS(3)
π NAME π
DCHKHS(3) β from the Library Functions Manual. The header has the title DCHKHS(3) and the path-ish bit /home/abui...IG/dchkhs.f(3) hanging around it, and the actual file path in the NAME entry is:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/dchkhs.f
β¨ SYNOPSIS β¨
π«Ά Functions/Subroutines π«Ά
subroutine DCHKHS (nsizes, nn, ntypes, dotype, iseed, thresh, nounit, a,
lda, h, t1, t2, u, ldu, z, uz, wr1, wi1, wr2, wi2, wr3, wi3, evectl,
evectr, evecty, evectx, uu, tau, work, nwork, iwork, select, result,
info)
DCHKHS
πΈ Function/Subroutine Documentation πΈ
subroutine DCHKHS (integer nsizes, integer, dimension( * ) nn, integer
ntypes, logical, dimension( * ) dotype, integer, dimension( 4 ) iseed,
double precision thresh, integer nounit, double precision, dimension(
lda, * ) a, integer lda, double precision, dimension( lda, * ) h, double
precision, dimension( lda, * ) t1, double precision, dimension( lda, * )
t2, double precision, dimension( ldu, * ) u, integer ldu, double
precision, dimension( ldu, * ) z, double precision, dimension( ldu, * )
uz, double precision, dimension( * ) wr1, double precision, dimension( *
) wi1, double precision, dimension( * ) wr2, double precision,
dimension( * ) wi2, double precision, dimension( * ) wr3, double
precision, dimension( * ) wi3, double precision, dimension( ldu, * )
evectl, double precision, dimension( ldu, * ) evectr, double precision,
dimension( ldu, * ) evecty, double precision, dimension( ldu, * )
evectx, double precision, dimension( ldu, * ) uu, double precision,
dimension( * ) tau, double precision, dimension( * ) work, integer
nwork, integer, dimension( * ) iwork, logical, dimension( * ) select,
double precision, dimension( 16 ) result, integer info)
DCHKHS
π Purpose π
bestie, <pink>DCHKHS</pink> checks the nonsymmetric eigenvalue problem routines. π
DGEHRDfactorsAasU H U', where'means transpose,His hessenberg, andUis an orthogonal matrix.DORGHRgenerates the orthogonal matrixU.DORMHRmultiplies a matrix by the orthogonal matrixU.DHSEQRfactorsHasZ T Z', whereZis orthogonal andTis , and the eigenvalue vectorW.DTREVCcomputes the left and right eigenvector matricesLandRforT.Lis lower quasi-triangular, andRis upper quasi-triangular.DHSEINcomputes the left and right eigenvector matricesYandXforH, using inverse iteration.DTREVC3computes left and right eigenvector matrices from a Schur matrixTand backtransforms them withZto eigenvector matricesLandRforA.LandRare GE matrices.
When DCHKHS 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, 16 tests will be performed:
(1)β| A - U H U**T | / ( |A| n ulp )(2)β| I - UU**T | / ( n ulp )(3)β| H - Z T Z**T | / ( |H| n ulp )(4)β| I - ZZ**T | / ( n ulp )(5)β| A - UZ H (UZ)**T | / ( |A| n ulp )(6)β| I - UZ (UZ)**T | / ( n ulp )(7)β| T(Z computed) - T(Z not computed) | / ( |T| ulp )(8)β| W(Z computed) - W(Z not computed) | / ( |W| ulp )(9)β| TR - RW | / ( |T| |R| ulp )(10)β| L**H T - W**H L | / ( |T| |L| ulp )(11)β| HX - XW | / ( |H| |X| ulp )(12)β| Y**H H - W**H Y | / ( |H| |Y| ulp )(13)β| AX - XW | / ( |A| |X| ulp )(14)β| Y**H A - W**H Y | / ( |A| |Y| ulp )(15)β| AR - RW | / ( |A| |R| ulp )(16)β| LA - WL | / ( |A| |L| ulp )
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:
(1)β The zero matrix.(2)β The identity matrix.(3)β A (transposed) Jordan block, with1's on the diagonal.(4)β A diagonal matrix with evenly spaced entries1, ..., ULPand random signs. (ULP = (first number larger than 1) - 1)(5)β A diagonal matrix with geometrically spaced entries1, ..., ULPand random signs.(6)β A diagonal matrix with entries1, ULP, ..., ULPand random signs.(7)β Same as(4), but multiplied bySQRT( overflow threshold )(8)β Same as(4), but multiplied bySQRT( underflow threshold )(9)β A matrix of the formU' T U, whereUis orthogonal andThas evenly spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle.(10)β A matrix of the formU' T U, whereUis orthogonal andThas geometrically spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle.(11)β A matrix of the formU' T U, whereUis orthogonal andThas entries1, ULP,..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle.(12)β A matrix of the formU' T U, whereUis orthogonal andThas real or complex conjugate paired eigenvalues randomly chosen from( ULP, 1 )and randomO(1)entries in the upper triangle.(13)β A matrix of the formX' T X, whereXhas conditionSQRT( ULP )andThas evenly spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle.(14)β A matrix of the formX' T X, whereXhas conditionSQRT( ULP )andThas geometrically spaced entries1, ..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle.(15)β A matrix of the formX' T X, whereXhas conditionSQRT( ULP )andThas entries1, ULP,..., ULPwith random signs on the diagonal and randomO(1)entries in the upper triangle.(16)β A matrix of the formX' 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.(17)β Same as(16), but multiplied bySQRT( overflow threshold )(18)β Same as(16), but multiplied bySQRT( underflow threshold )(19)β Nonsymmetric matrix with random entries chosen from(-1,1).(20)β Same as(19), but multiplied bySQRT( overflow threshold )(21)β Same as(19), but multiplied bySQRT( underflow threshold )NSIZESβ INTEGER β how many different matrix sizes we're gonna test. If it's zero,DCHKHSliterally does nothing, no thoughts head empty. It must be at least zero. Not modified.NNβ INTEGER array, dimension (NSIZES) β the actual sizes the matrices will be, bestie. Zero values get skipped, no cap. All values must be at least zero. Not modified.NTYPESβ INTEGER β how many elements live inDOTYPE. If it's zero,DCHKHSagain does nothing (slay, but also why are you here). Must be at least zero. Special case alert π¨: if it'sMAXTYP+1andNSIZESis 1, then an extra type,MAXTYP+1, gets defined β which just uses whatever matrix is already sitting inA. That's only useful whenDOTYPE(1:MAXTYP)is.FALSE.andDOTYPE(MAXTYP+1)is.TRUE.. Not modified.DOTYPEβ LOGICAL array, dimension (NTYPES) β ifDOTYPE(j)is.TRUE., then for every size inNNa matrix of that size and of typejgets generated, periodt. IfNTYPESis smaller than the max number of types defined (PARAMETER MAXTYP), then typesNTYPES+1throughMAXTYPdon't get generated at all. And ifNTYPESis bigger thanMAXTYP, thenDOTYPE(MAXTYP+1)throughDOTYPE(NTYPES)are just ignored. Not modified.ISEEDβ INTEGER array, dimension (4) β the seed of the random number generator, on entry. The elements should be between 0 and 4095; if they're not, they get reduced mod 4096 (the algorithm said no ma'am). AlsoISEED(4)must be odd β like, non-negotiable. The generator uses a linear congruential sequence limited to small integers, so it should produce machine independent random numbers. The values ofISEEDget changed on exit and can be reused in the next call toDCHKHSto keep the same random number sequence going. Modified.THRESHβ DOUBLE PRECISION β a test counts as failed if the error, 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. Not modified.NOUNITβ INTEGER β the FORTRAN unit number used for printing out error messages (like, e.g., if a routine returnsIINFOnot equal to 0). Not modified.Aβ DOUBLE PRECISION array, dimension (LDA,max(NN)) β holds the matrix whose eigenvalues are gonna be computed. On exit,Acontains the last matrix actually used. Modified.LDAβ INTEGER β the leading dimension ofA,H,T1andT2. It must be at least 1 and at least max(NN). Not modified.Hβ DOUBLE PRECISION array, dimension (LDA,max(NN)) β the upper hessenberg matrix computed byDGEHRD. On exit,Hcontains the Hessenberg form of the matrix inA. Modified.T1β DOUBLE PRECISION array, dimension (LDA,max(NN)) β the Schur (=) matrix computed byDHSEQRifZis computed. On exit,T1contains the Schur form of the matrix inA. Modified.T2β DOUBLE PRECISION array, dimension (LDA,max(NN)) β the Schur matrix computed byDHSEQRwhenZis not computed. This should be identical toT1β like, that's the whole vibe check. Modified.LDUβ INTEGER β the leading dimension ofU,Z,UZandUU. It must be at least 1 and at least max(NN). Not modified.Uβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β the orthogonal matrix computed byDGEHRD. Modified.Zβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β the orthogonal matrix computed byDHSEQR. Modified.UZβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β the product ofUtimesZ. Modified.WR1β DOUBLE PRECISION array, dimension (max(NN))WI1β DOUBLE PRECISION array, dimension (max(NN)) β the real and imaginary parts of the eigenvalues ofA, as computed whenZis computed. On exit,WR1 + WI1*iare the eigenvalues of the matrix inA. Modified.WR2β DOUBLE PRECISION array, dimension (max(NN))WI2β DOUBLE PRECISION array, dimension (max(NN)) β the real and imaginary parts of the eigenvalues ofA, as computed whenTis computed but notZ. On exit,WR2 + WI2*iare the eigenvalues of the matrix inA. Modified.WR3β DOUBLE PRECISION array, dimension (max(NN))WI3β DOUBLE PRECISION array, dimension (max(NN)) β likeWR1,WI1, these arrays contain the eigenvalues ofA, but the ones computed whenDHSEQRonly computes the eigenvalues, i.e. not the Schur vectors and no more of the Schur form than is necessary for computing the eigenvalues. Modified.EVECTLβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β the (upper triangular) left eigenvector matrix for the matrix inT1. For complex conjugate pairs, the real part is stored in one row and the imaginary part in the next. Modified.EVEZTRβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β the (upper triangular) right eigenvector matrix for the matrix inT1. For complex conjugate pairs, the real part is stored in one column and the imaginary part in the next. Modified.EVECTYβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β the left eigenvector matrix for the matrix inH. For complex conjugate pairs, the real part is stored in one row and the imaginary part in the next. Modified.EVECTXβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β the right eigenvector matrix for the matrix inH. For complex conjugate pairs, the real part is stored in one column and the imaginary part in the next. Modified.UUβ DOUBLE PRECISION array, dimension (LDU,max(NN)) β details of the orthogonal matrix computed byDGEHRD. Modified.TAUβ DOUBLE PRECISION array, dimension(max(NN)) β further details of the orthogonal matrix computed byDGEHRD. Modified.WORKβ DOUBLE PRECISION array, dimension (NWORK) β workspace, bestie. Modified.NWORKβ INTEGER β the number of entries inWORK. Gotta satisfyNWORK >= 4*NN(j)*NN(j) + 2.IWORKβ INTEGER array, dimension (max(NN)) β workspace. Modified.SELECTβ LOGICAL array, dimension (max(NN)) β workspace. Modified.RESULTβ DOUBLE PRECISION array, dimension (16) β the values computed by the fourteen tests described above. The values are currently limited to1/ulp, to avoid overflow. Modified.INFOβ INTEGER β literally the receipts. If0, then everything ran OK β¨. Otherwise:-1:NSIZES < 0-2: SomeNN(j) < 0-3:NTYPES < 0-6:THRESH < 0-9:LDA < 1orLDA < NMAX, whereNMAXis max(NN(j)).-14:LDU < 1orLDU < NMAX.-28:NWORKtoo small.- If
DLATMR,SLATMS, orSLATMEreturns an error code, the absolute value of it is returned. - If
1, thenDHSEQRcould not find all the shifts. - If
2, then the EISPACK code (for small blocks) failed π. - If
>2, then30*Niterations were not enough to find an eigenvalue or to decompose the problem.
Modified.
πΈ Some Local Variables and Parameters πΈ
okay so these aren't arguments, they're the backstage crew, but you should still know them:
ZERO,ONEβ real 0 and 1. iconic, no notes.MAXTYPβ the number of types defined.MTESTβ the number of tests defined. Care must be taken that (1) the size ofRESULT, (2) the number of tests actually performed, and (3)MTESTagree. fr fr, keep these in sync.NTESTβ the number of tests performed on this matrix so far. This should be less thanMTEST, and equal to it by the last test. It'll be less if any of the routines being tested indicates that it could not compute the matrices that would be tested.NMAXβ largest value inNN.NMATSβ the number of matrices generated so far.NERRSβ the number of tests which have exceededTHRESHso far (computed byDLAFTS).COND,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.
RTOVFL, RTUNFL, RTULP, RTULPI β square roots of the previous 4 values. π«Ά
The following four arrays decode JTYPE:
KTYPE(j)β the general type (1-10) for type .KMODE(j)β theMODEvalue to be passed to the matrix generator for type .KMAGN(j)β the order of magnitude (O(1),O(overflow^(1/2) ),O(underflow^(1/2) )).KCONDS(j)β selects whetherCONDSis to be1or1/sqrt(ulp). (0means irrelevant.)
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 417 of file dchkhs.f. β¨
πΈ Author
Generated automatically by Doxygen for LAPACK from the source code.
Okay bestie, thatβs the whole DCHKHS(3) page! Footer vibe: LAPACK Version 3.12.0, file /home/abui...IG/dchkhs.f(3) β source/version/date footer spot included, no cap π
π
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms