TESTING/EIG/dget52.f(3)
π NAME π
okay so bestie, this page is TESTING/EIG/dget52.f β it lives in the Library Functions Manual, and it's all about the DGET52 subroutine. π
β¨ SYNOPSIS β¨
π¦ Functions/Subroutines π¦
subroutine dget52 (left, n, a, lda, b, ldb, e, lde, alphar, alphai, beta, work, result)DGET52
π Function/Subroutine Documentation π
πΈ subroutine dget52 πΈ
subroutine dget52 (logical left, integer n, double precision, dimension(
lda, * ) a, integer lda, double precision, dimension( ldb, * ) b,
integer ldb, double precision, dimension( lde, * ) e, integer lde,
double precision, dimension( * ) alphar, double precision, dimension( *
) alphai, double precision, dimension( * ) beta, double precision,
dimension( * ) work, double precision, dimension( 2 ) result)
DGET52 is the name on the label, and this is what it's serving. π
π¦ Purpose π¦
okay so bestie, DGET52 does an eigenvector check for the generalized eigenvalue problem. That's the whole main-character mission. β¨
The basic test for right eigenvectors is:
| b(j) A E(j) - a(j) B E(j) |
RESULT(1) = max -------------------------------
j n ulp max( |b(j) A|, |a(j) B| )
using the 1-norm. Here, a(j)/b(j) = w is the j-th generalized eigenvalue of A - w B, or, equivalently, b(j)/a(j) = m is the j-th generalized eigenvalue of m A - B.
For real eigenvalues, the test is straightforward. For complex eigenvalues, E(j) and a(j) are complex, represented by Er(j) + i*Ei(j) and ar(j) + i*ai(j), resp., so the test for that eigenvector becomes:
max( |Wr|, |Wi| )
--------------------------------------------
n ulp max( |b(j) A|, (|ar(j)|+|ai(j)|) |B| )
where:
Wr = b(j) A Er(j) - ar(j) B Er(j) + ai(j) B Ei(j)
Wi = b(j) A Ei(j) - ai(j) B Er(j) - ar(j) B Ei(j)
For left eigenvectors, this is the exact little artifact:
T T _
For left eigenvectors, A , B , a, and b are used.
DGET52 also tests the normalization of E. Each eigenvector is supposed to be normalized so that the maximum of its elements is 1, where in this case, of a complex value x is |Re(x)| + |Im(x)|; let us call this maximum norm of a vector v M(v). If a(j)=b(j)=0, then the eigenvector is set to be the jth coordinate vector. The normalization test is:
RESULT(2) = max | M(v(j)) - 1 | / ( n ulp )
eigenvectors v(j)
π Parameters π
LEFTβLEFTisLOGICAL.=.TRUE.: the eigenvectors in the columns ofEare assumed to be left eigenvectors.=.FALSE.: the eigenvectors in the columns ofEare assumed to be right eigenvectors.NβNisINTEGER. The size of the matrices. If it is zero,DGET52does nothing. It must be at least zero.AβAisDOUBLE PRECISIONarray, dimension(LDA, N). The matrixA.LDAβLDAisINTEGER. The leading dimension ofA. It must be at least1and at leastN.BβBisDOUBLE PRECISIONarray, dimension(LDB, N). The matrixB.LDBβLDBisINTEGER. The leading dimension ofB. It must be at least1and at leastN.EβEisDOUBLE PRECISIONarray, dimension(LDE, N). The matrix of eigenvectors. It must beO( 1 ). Complex eigenvalues and eigenvectors always come in pairs, the eigenvalue and its conjugate being stored in adjacent elements ofALPHAR,ALPHAI, andBETA. Thus, ifa(j)/b(j)anda(j+1)/b(j+1)are a complex conjugate pair of generalized eigenvalues, thenE(,j)contains the real part of the eigenvector andE(,j+1)contains the imaginary part. Note that whetherE(,j)is a real eigenvector or part of a complex one is specified by whetherALPHAI(j)is zero or not.LDEβLDEisINTEGER. The leading dimension ofE. It must be at least1and at leastN.ALPHARβALPHARisDOUBLE PRECISIONarray, dimension(N). The real parts of the valuesa(j)as described above, which, along withb(j), define the generalized eigenvalues. Complex eigenvalues always come in complex conjugate pairsa(j)/b(j)anda(j+1)/b(j+1), which are stored in adjacent elements inALPHAR,ALPHAI, andBETA. Thus, if the j-th and(j+1)-st eigenvalues form a pair,ALPHAR(j+1)/BETA(j+1)is assumed to be equal toALPHAR(j)/BETA(j).ALPHAIβALPHAIisDOUBLE PRECISIONarray, dimension(N). The imaginary parts of the valuesa(j)as described above, which, along withb(j), define the generalized eigenvalues. IfALPHAI(j)=0, then the eigenvalue is real, otherwise it is part of a complex conjugate pair. Complex eigenvalues always come in complex conjugate pairsa(j)/b(j)anda(j+1)/b(j+1), which are stored in adjacent elements inALPHAR,ALPHAI, andBETA. Thus, if the j-th and(j+1)-st eigenvalues form a pair,ALPHAI(j+1)/BETA(j+1)is assumed to be equal to-ALPHAI(j)/BETA(j). Also, nonzero values inALPHAIare assumed to always come in adjacent pairs.BETAβBETAisDOUBLE PRECISIONarray, dimension(N). The valuesb(j)as described above, which, along witha(j), define the generalized eigenvalues.WORKβWORKisDOUBLE PRECISIONarray, dimension(N**2+N).RESULTβRESULTisDOUBLE PRECISIONarray, dimension(2). The values computed by the test described above. IfA EorB Eis likely to overflow, thenRESULT(1:2)is set to10 / ulp.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 197 of file dget52.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
π cute sign-off, bestie: this page comes from LAPACK, Version 3.12.0, and the page name is TESTING/EIG/dget52.f(3). The footer doesn't list a date, so there's no date to quote β just vibes and version info. π«Άβ¨
π¦ 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