CGET23(3)
CGET23(3) π β¨
okay so this page is from the Library Functions Manual, and it's all about CGET23 β a LAPACK test routine with main character energy. bestie, we're checking the nonsymmetric eigenvalue problem driver CGEEVX. no cap, it's giving linear algebra detective work ππ
π NAME π
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/cget23.f
π SYNOPSIS π
π§ Functions/Subroutines π§
subroutine CGET23 (comp, isrt, balanc, jtype, thresh, iseed, nounit, n,
a, lda, h, w, w1, vl, ldvl, vr, ldvr, lre, ldlre, rcondv, rcndv1,
rcdvin, rconde, rcnde1, rcdein, scale, scale1, result, work, lwork,
rwork, info)
CGET23
π¦ Function/Subroutine Documentation π¦
subroutine CGET23 (logical comp, integer isrt, character balanc, integer
jtype, real thresh, integer, dimension( 4 ) iseed, integer nounit,
integer n, complex, dimension( lda, * ) a, integer lda, complex,
dimension( lda, * ) h, complex, dimension( * ) w, complex, dimension( *
) w1, complex, dimension( ldvl, * ) vl, integer ldvl, complex,
dimension( ldvr, * ) vr, integer ldvr, complex, dimension( ldlre, * )
lre, integer ldlre, real, dimension( * ) rcondv, real, dimension( * )
rcndv1, real, dimension( * ) rcdvin, real, dimension( * ) rconde, real,
dimension( * ) rcnde1, real, dimension( * ) rcdein, real, dimension( * )
scale, real, dimension( * ) scale1, real, dimension( 11 ) result,
complex, dimension( * ) work, integer lwork, real, dimension( * ) rwork,
integer info)
CGET23
π― Purpose π―
okay so CGET23 checks the nonsymmetric eigenvalue problem driver CGEEVX. If COMP = .FALSE., the first 8 of the following tests are performed on the input matrix A, and test 9 is also run if LWORK is sufficiently large. If COMP is .TRUE., all 11 tests are performed. periodt π
- Test 1 β formula:
| 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).
- Test 2 β formula:
| 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.
- Test 3 β formula:
| |VR(i)| - 1 | / ulp and largest component real
VR(i) denotes the i-th column of VR.
- Test 4 β formula:
| |VL(i)| - 1 | / ulp and largest component real
VL(i) denotes the i-th column of VL.
- Test 5 β
0ifW(full) = W(partial),1/ulpotherwise.
W(full) denotes the eigenvalues computed when VR, VL, RCONDV and RCONDE are also computed, and W(partial) denotes the eigenvalues computed when only some of VR, VL, RCONDV, and RCONDE are computed.
- Test 6 β
0ifVR(full) = VR(partial),1/ulpotherwise.
VR(full) denotes the right eigenvectors computed when VL, RCONDV and RCONDE are computed, and VR(partial) denotes the result when only some of VL and RCONDV are computed.
- Test 7 β
0ifVL(full) = VL(partial),1/ulpotherwise.
VL(full) denotes the left eigenvectors computed when VR, RCONDV and RCONDE are computed, and VL(partial) denotes the result when only some of VR and RCONDV are computed.
- Test 8 β this vibe:
0 if SCALE, ILO, IHI, ABNRM (full) =
SCALE, ILO, IHI, ABNRM (partial)
1/ulp otherwise
SCALE, ILO, IHI and ABNRM describe how the matrix is balanced. (full) is when VR, VL, RCONDE and RCONDV are also computed, and (partial) is when some are not computed.
- Test 9 β
0ifRCONDV(full) = RCONDV(partial),1/ulpotherwise.
RCONDV(full) denotes the reciprocal condition numbers of the right eigenvectors computed when VR, VL and RCONDE are also computed. RCONDV(partial) denotes the reciprocal condition numbers when only some of VR, VL and RCONDE are computed.
- Test 10 β formula:
|RCONDV - RCDVIN| / cond(RCONDV)
RCONDV is the reciprocal right eigenvector condition number computed by CGEEVX 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.
- Test 11 β formula:
|RCONDE - RCDEIN| / cond(RCONDE)
RCONDE is the reciprocal eigenvalue condition number computed by CGEEVX 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.
π Parameters π
COMPβCOMP is LOGICAL.COMPdescribes which input tests to perform:= .FALSE.if the computed condition numbers are not to be tested againstRCDVINandRCDEIN= .TRUE.if they are to be compared
ISRTβISRT is INTEGER. IfCOMP = .TRUE.,ISRTindicates in how the eigenvalues corresponding to values inRCDVINandRCDEINare ordered:= 0means the eigenvalues are sorted by increasing real part= 1means the eigenvalues are sorted by increasing imaginary part
If COMP = .FALSE., ISRT is not referenced.
BALANCβBALANC is CHARACTER. Describes the balancing option to be tested.= 'N'for no permuting or diagonal scaling= 'P'for permuting but no diagonal scaling= 'S'for no permuting but diagonal scaling= 'B'for permuting and diagonal scaling
JTYPEβJTYPE is INTEGER. Type of input matrix. Used to label output if error occurs.THRESHβTHRESH is REAL. A test will count 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.ISEEDβISEED is INTEGER array, dimension (4). IfCOMP = .FALSE., the random number generator seed used to produce matrix. IfCOMP = .TRUE.,ISEED(1)= the number of the example. Used to label output if error occurs.NOUNITβNOUNIT is INTEGER. The FORTRAN unit number for printing out error messages (e.g., if a routine returnsINFOnot equal to 0.)NβN is INTEGER. The dimension ofA.Nmust be at least 0.AβA is COMPLEX array, dimension (LDA,N). Used to hold the matrix whose eigenvalues are to be computed.LDAβLDA is INTEGER. The leading dimension ofA, andH.LDAmust be at least 1 and at leastN.HβH is COMPLEX array, dimension (LDA,N). Another copy of the test matrixA, modified byCGEEVX.WβW is COMPLEX array, dimension (N). Contains the eigenvalues ofA.W1βW1 is COMPLEX array, dimension (N). LikeW, this array contains the eigenvalues ofA, but those computed whenCGEEVXonly computes a partial eigendecomposition, i.e. not the eigenvalues and left and right eigenvectors.VLβVL is COMPLEX array, dimension (LDVL,N).VLholds the computed left eigenvectors.LDVLβLDVL is INTEGER. Leading dimension ofVL. Must be at leastmax(1,N).VRβVR is COMPLEX array, dimension (LDVR,N).VRholds the computed right eigenvectors.LDVRβLDVR is INTEGER. Leading dimension ofVR. Must be at leastmax(1,N).LREβLRE is COMPLEX array, dimension (LDLRE,N).LREholds the computed right or left eigenvectors.LDLREβLDLRE is INTEGER. Leading dimension ofLRE. Must be at leastmax(1,N).RCONDVβRCONDV is REAL array, dimension (N).RCONDVholds the computed reciprocal condition numbers for eigenvectors.RCNDV1βRCNDV1 is REAL array, dimension (N).RCNDV1holds more computed reciprocal condition numbers for eigenvectors.RCDVINβRCDVIN is REAL array, dimension (N). WhenCOMP = .TRUE.,RCDVINholds the precomputed reciprocal condition numbers for eigenvectors to be compared withRCONDV.RCONDEβRCONDE is REAL array, dimension (N).RCONDEholds the computed reciprocal condition numbers for eigenvalues.RCNDE1βRCNDE1 is REAL array, dimension (N).RCNDE1holds more computed reciprocal condition numbers for eigenvalues.RCDEINβRCDEIN is REAL array, dimension (N). WhenCOMP = .TRUE.,RCDEINholds the precomputed reciprocal condition numbers for eigenvalues to be compared withRCONDE.SCALEβSCALE is REAL array, dimension (N). Holds information describing balancing of matrix.SCALE1βSCALE1 is REAL array, dimension (N). Holds information describing balancing of matrix.
RESULT
RESULTβ this one's aREAL array, dimension (11)and it's lowkey the whole point of the function: it holds the values computed by the 11 tests we described up above. Heads up though β the values are currently limited to1/ulp, to avoid overflow. So if you're out here expecting huge spicy numbers, bestie, no cap, you're getting capped at1/ulpand that's just how it is πWORKβWORK is COMPLEX array, dimension (LWORK). The scratch space. The vibes holder. π«ΆLWORKβLWORK is INTEGER, and it's literally just the number of entries in WORK. But listen, there's a minimum, and the minimum is not a suggestion:
It must be at least2*N, and it must be2*N+N**2if tests 9, 10, or 11 are going to be performed. So if you're running the later tests and you skimped onLWORK? That's a you problem, and it's giving "I didn't read the docs." π
RWORKβRWORK is REAL array, dimension (2*N). Real-valued workspace, size2*N, keep it moving β¨INFOβINFO is INTEGER, our favorite little status reporter, and here's the tea:- If
0, successful exit. Slay. Periodt. π - If
<0, input parameter-INFOhad an incorrect value. (Yes, the parameter number is the absolute value β classic LAPACK iykyk.) - If
>0,CGEEVXreturned an error code, the absolute value of which is returned.
- If
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 363 of file cget23.f.
π¨οΈ Author
Generated automatically by Doxygen for LAPACK from the source code. Not a real person, just a very enthusiastic documentation printer that decided it also counts as an author π honestly? iconic behavior.
And that's the whole page, bestie β you made it to the end π This little gem is from LAPACK, Version 3.12.0, and it lives at that path up top in the footer (the .../IG/cget23.f(3) one β you know the vibe). Go forth, pass LWORK correctly, and don't let INFO catch you slippin' ππ
π¦ 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