SDRGVX(3)
β¨ NAME β¨
Okay so bestie, this page is from the Library Functions Manual β the header path is /home/abui...IG/sdrgvx.f(3) β and the NAME section is literally the full path:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/sdrgvx.f
That's the whole vibe. Slay. π
π¦ SYNOPSIS π¦
Functions/Subroutines
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, no cap. β¨
π Function/Subroutine Documentation π
Here's the full signature, copied exactly because we do not mess with Fortran:
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, iconic. π
π Purpose π
Okay so SDRGVX is the vibe-checker for the nonsymmetric generalized eigenvalue problem expert driver SGGEVX. Fr fr.
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 giving multitasking main character energy. β¨
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 the known exact condition numbers for eigenvalues. For the condition numbers of the eigenvectors corresponding the first and last eigenvalues are also know ``exactly'' (see SLATM6). (Yes, "know" is what the page says, bestie β I'm not fixing it. π«Ά)
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| ) )
where l**H is the conjugate transpose of l.
- 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 πΈ
NSIZEβNSIZEisINTEGER. 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βTHRESHisREAL. A test will count as if the , 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βNINisINTEGER. The FORTRAN unit number for reading in the data file of problems to solve.NOUTβNOUTisINTEGER. The FORTRAN unit number for printing out error messages (e.g., if a routine returnsIINFOnot equal to0.)AβAisREALarray, dimension(LDA, NSIZE). 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,B,AI,BI,Ao, andBo. It must be at least1and at leastNSIZE.BβBisREALarray, dimension(LDA, NSIZE). Used to hold the matrix whose eigenvalues are to be computed. On exit,Bcontains the last matrix actually used.AIβAIisREALarray, dimension(LDA, NSIZE). Copy ofA, modified bySGGEVX.BIβBIisREALarray, dimension(LDA, NSIZE). Copy ofB, modified bySGGEVX.ALPHARβALPHARisREALarray, dimension(NSIZE).ALPHAIβALPHAIisREALarray, dimension(NSIZE).BETAβBETAisREALarray, dimension(NSIZE). On exit,(ALPHAR + ALPHAI*i)/BETAare the eigenvalues.VLβVLisREALarray, dimension(LDA, NSIZE).VLholds the left eigenvectors computed bySGGEVX.VRβVRisREALarray, dimension(LDA, NSIZE).VRholds the right eigenvectors computed bySGGEVX.ILOβILOisINTEGER.IHIβIHIisINTEGER.LSCALEβLSCALEisREALarray, dimension(N).RSCALEβRSCALEisREALarray, dimension(N).SβSisREALarray, dimension(N).STRUβSTRUisREALarray, dimension(N).DIFβDIFisREALarray, dimension(N).DIFTRUβDIFTRUisREALarray, dimension(N).WORKβWORKisREALarray, dimension(LWORK).LWORKβLWORKisINTEGER. Leading dimension ofWORK.LWORK >= 2*N*N+12*N+16.IWORKβIWORKisINTEGERarray, dimension(LIWORK).LIWORKβLIWORKisINTEGER. Leading dimension ofIWORK. Must be at leastN+6.RESULTβRESULTisREALarray, dimension(4).BWORKβBWORKisLOGICALarray, dimension(N).INFOβINFOisINTEGER.= 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 ποΈ
Generated automatically by Doxygen for LAPACK from the source code.
Cute sign-off: this page is LAPACK Version 3.12.0, footer path /home/abui...IG/sdrgvx.f(3) β and no date is printed in that footer, bestie, just version + path. πβ¨
π¦ 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