TESTING/EIG/sdrgvx.f(3)
πΈ NAME πΈ
Bestie, welcome to TESTING/EIG/sdrgvx.f(3) from the Library Functions Manual. This page is the whole vibe check for TESTING/EIG/sdrgvx.f β yes, thatβs the file. π
β¨ SYNOPSIS β¨
π§ Functions/Subroutines π§
Okay so hereβs the subroutine era:
subroutine sdrgvx (nsize, thresh, nin, nout, a, lda, b, ai, bi, alphar,
alphai, beta, vl, vr, ilo, ihi, lscale, rscale, s, stru, dif,
diftru, work, lwork, iwork, liwork, result, bwork, info)
SDRGVX β thatβs the subroutine name, and itβs giving main character energy. π
π Function/Subroutine Documentation π
π Full signature π
Hereβs the exact full signature, no cap:
subroutine sdrgvx (integer nsize, real thresh, integer nin, integer nout,
real, dimension( lda, * ) a, integer lda, real, dimension( lda, * ) b,
real, dimension( lda, * ) ai, real, dimension( lda, * ) bi, real,
dimension( * ) alphar, real, dimension( * ) alphai, real, dimension( * )
beta, real, dimension( lda, * ) vl, real, dimension( lda, * ) vr,
integer ilo, integer ihi, real, dimension( * ) lscale, real, dimension(
* ) rscale, real, dimension( * ) s, real, dimension( * ) stru, real,
dimension( * ) dif, real, dimension( * ) diftru, real, dimension( * )
work, integer lwork, integer, dimension( * ) iwork, integer liwork,
real, dimension( 4 ) result, logical, dimension( * ) bwork, integer
info)
SDRGVX β again, thatβs the name. It ate. π
π¦ Purpose π¦
Okay so the whole point: SDRGVX checks the nonsymmetric generalized eigenvalue problem expert driver SGGEVX. Periodt.
SGGEVX computes the generalized eigenvalues, (optionally) the left and/or right eigenvectors, (optionally) computes a balancing transformation to improve the conditioning, and (optionally) reciprocal condition numbers for the eigenvalues and eigenvectors. Itβs doing a lot, and weβre obsessed. β¨
When SDRGVX is called with NSIZE > 0, two types of test matrix pairs are generated by the subroutine SLATM6 and test the driver SGGEVX. The test matrices have known exact condition numbers for eigenvalues. For the condition numbers of the eigenvectors corresponding to the first and last eigenvalues, those are also known βexactlyβ too (see SLATM6).
For each matrix pair, the following tests will be performed and compared with the threshold THRESH.
- max over all left eigenvalue/-vector pairs
(beta/alpha,l)of| l**H * (beta A - alpha B) | / ( ulp max( |beta A|, |alpha B| ) ), wherel**His the conjugate transpose ofl. - max over all right eigenvalue/-vector pairs
(beta/alpha,r)of| (beta A - alpha B) r | / ( ulp max( |beta A|, |alpha B| ) ). - The condition number
S(i)of eigenvalues computed bySGGEVXdiffers less than a factorTHRESHfrom the exactS(i)(seeSLATM6). DIF(i)computed bySTGSNAdiffers less than a factor10*THRESHfrom the exact value (for the 1st and 5th vectors only).
π Test Matrices π
Two kinds of test matrix pairs
(A, B) = inverse(YH) * (Da, Db) * inverse(X)
are used in the tests:
1: Da = 1+a 0 0 0 0 Db = 1 0 0 0 0
0 2+a 0 0 0 0 1 0 0 0
0 0 3+a 0 0 0 0 1 0 0
0 0 0 4+a 0 0 0 0 1 0
0 0 0 0 5+a , 0 0 0 0 1 , and
2: Da = 1 -1 0 0 0 Db = 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 1 0 0
0 0 0 1+a 1+b 0 0 0 1 0
0 0 0 -1-b 1+a , 0 0 0 0 1 .
In both cases the same inverse(YH) and inverse(X) are used to compute (A, B), giving the exact eigenvectors to (A,B) as (YH, X):
YH: = 1 0 -y y -y X = 1 0 -x -x x
0 1 -y y -y 0 1 x -x -x
0 0 1 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 1 0
0 0 0 0 1, 0 0 0 0 1 , where
a, b, x and y will have all values independently of each other from { sqrt(sqrt(ULP)), 0.1, 1, 10, 1/sqrt(sqrt(ULP)) }.
π Parameters π
Time for the parameter roll call, bestie. Every single one is here, fr fr:
NSIZEβINTEGER. The number of sizes of matrices to use.NSIZEmust be at least zero. If it is zero, no randomly generated matrices are tested, but any test matrices read fromNINwill be tested.THRESHβREAL. A test will count as not passing if the value, 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.NINβINTEGER. The FORTRAN unit number for reading in the data file of problems to solve.NOUTβINTEGER. The FORTRAN unit number for printing out error messages (e.g., if a routine returnsIINFOnot equal to0.)AβREAL array, dimension (LDA, NSIZE). Used to hold the matrix whose eigenvalues are to be computed. On exit,Acontains the last matrix actually used.LDAβINTEGER. The leading dimension ofA,B,AI,BI,Ao, andBo. It must be at least1and at leastNSIZE.BβREAL array, dimension (LDA, NSIZE). Used to hold the matrix whose eigenvalues are to be computed. On exit,Bcontains the last matrix actually used.AIβREAL array, dimension (LDA, NSIZE). Copy ofA, modified bySGGEVX.BIβREAL array, dimension (LDA, NSIZE). Copy ofB, modified bySGGEVX.ALPHARβREAL array, dimension (NSIZE).ALPHAIβREAL array, dimension (NSIZE).BETAβREAL array, dimension (NSIZE). On exit,(ALPHAR + ALPHAI*i)/BETAare the eigenvalues.VLβREAL array, dimension (LDA, NSIZE).VLholds the left eigenvectors computed bySGGEVX.VRβREAL array, dimension (LDA, NSIZE).VRholds the right eigenvectors computed bySGGEVX.ILOβINTEGER.IHIβINTEGER.LSCALEβREAL array, dimension (N).RSCALEβREAL array, dimension (N).SβREAL array, dimension (N).STRUβREAL array, dimension (N).DIFβREAL array, dimension (N).DIFTRUβREAL array, dimension (N).WORKβREAL array, dimension (LWORK).LWORKβINTEGER. Leading dimension ofWORK.LWORK >= 2*N*N+12*N+16.IWORKβINTEGER array, dimension (LIWORK).LIWORKβINTEGER. Leading dimension ofIWORK. Must be at leastN+6.RESULTβREAL array, dimension (4).BWORKβLOGICAL array, dimension (N).INFOβINTEGER.= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.> 0: A routine returned an error code.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 297 of file sdrgvx.f.
π Author (auto-generated) π
Generated automatically by Doxygen for LAPACK from the source code.
π Thatβs the whole page, bestie! Generated automatically by Doxygen for LAPACK from the source code β LAPACK Version 3.12.0, TESTING/EIG/sdrgvx.f(3). The footer doesnβt give a date, so thatβs the whole timestamp tea. π«Άβ¨
π¦ 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