SRC/dgeev.f(3)
π SRC/dgeev.f π
okay so bestie, welcome to the glow-up of SRC/dgeev.f(3) β it lives in the Library Functions Manual and honestly? it's iconic. sit down, grab a strawberry drink π, and let's get into it.
β¨ SYNOPSIS β¨
π Functions/Subroutines π
subroutine dgeev (jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info)β DGEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices
π¦ Function/Subroutine Documentation π¦
subroutine dgeev (character jobvl, character jobvr, integer n, double
precision, dimension( lda, * ) a, integer lda, double precision,
dimension( * ) wr, double precision, dimension( * ) wi, double
precision, dimension( ldvl, * ) vl, integer ldvl, double precision,
dimension( ldvr, * ) vr, integer ldvr, double precision, dimension( * )
work, integer lwork, integer info)
DGEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices β like, that's the whole vibe, she said it herself. π
πΈ Purpose πΈ
okay so here's the tea β:
DGEEV computes, for an N-by-N real nonsymmetric matrix A, the eigenvalues and (if you want them) the left and/or right eigenvectors.
The right eigenvector v(j) of A satisfies
A * v(j) = lambda(j) * v(j)
where lambda(j) is its eigenvalue. cute, classic, no notes.
The left eigenvector u(j) of A satisfies
u(j)**H * A = lambda(j) * u(j)**H
where u(j)**H denotes the conjugate-transpose of u(j). periodt. π
The computed eigenvectors are normalized to have Euclidean norm equal to 1 and largest component real. that's the flex, bestie β norm 1 and a real biggest component. β¨
π Parameters π
JOBVL
JOBVL is CHARACTER*1
= 'N': left eigenvectors ofAare not computed;= 'V': left eigenvectors ofAare computed.
JOBVR
JOBVR is CHARACTER*1
= 'N': right eigenvectors ofAare not computed;= 'V': right eigenvectors ofAare computed.
N
N is INTEGER
The order of the matrix A. N >= 0. (zero is allowed, she's chill like that.)
A
A is DOUBLE PRECISION array, dimension (LDA,N)
- On entry, the N-by-N matrix
A. - On exit,
Ahas been overwritten. π yes, she takes it, the original is gone, that's the deal.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >= max(1,N).
WR
WR is DOUBLE PRECISION array, dimension (N)
(just vibes here, the real deets are down in WI π«Ά)
WI
WI is DOUBLE PRECISION array, dimension (N)
WR and WI contain the real and imaginary parts, respectively, of the computed eigenvalues. Complex conjugate pairs of eigenvalues appear consecutively, with the eigenvalue having the positive imaginary part first. so they're sitting next to each other in the group chat, positive-imag friend first. π
VL
VL is DOUBLE PRECISION array, dimension (LDVL,N)
- If
JOBVL = 'V', the left eigenvectorsu(j)are stored one after another in the columns ofVL, in the same order as their eigenvalues. - If
JOBVL = 'N',VLis not referenced. (she's literally not invited, no hard feelings π) - If the j-th eigenvalue is real, then
u(j) = VL(:,j), the j-th column ofVL. - If the j-th and (j+1)-st eigenvalues form a complex conjugate pair, then
u(j) = VL(:,j) + i*VL(:,j+1)andu(j+1) = VL(:,j) - i*VL(:,j+1).
LDVL
LDVL is INTEGER
The leading dimension of the array VL. LDVL >= 1; if JOBVL = 'V', LDVL >= N.
VR
VR is DOUBLE PRECISION array, dimension (LDVR,N)
- If
JOBVR = 'V', the right eigenvectorsv(j)are stored one after another in the columns ofVR, in the same order as their eigenvalues. - If
JOBVR = 'N',VRis not referenced. - If the j-th eigenvalue is real, then
v(j) = VR(:,j), the j-th column ofVR. - If the j-th and (j+1)-st eigenvalues form a complex conjugate pair, then
v(j) = VR(:,j) + i*VR(:,j+1)andv(j+1) = VR(:,j) - i*VR(:,j+1).
LDVR
LDVR is INTEGER
The leading dimension of the array VR. LDVR >= 1; if JOBVR = 'V', LDVR >= N.
WORK
WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK. she's telling you how much space she actually wanted. π
LWORK
LWORK is INTEGER
The dimension of the array WORK. LWORK >= max(1,3*N), and if JOBVL = 'V' or JOBVR = 'V', LWORK >= 4*N. For good performance, LWORK must generally be larger. (yes bestie, bigger. it's giving "give me room to breathe". π)
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. sneaky lil probe, she's just asking questions. π§
INFO
INFO is INTEGER
= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value.> 0: ifINFO = i, the QR algorithm failed to compute all the eigenvalues, and no eigenvectors have been computed; elementsi+1:NofWRandWIcontain eigenvalues which have converged.
okay real talk β οΈ β that> 0case is not a slay. if it happens you get zero eigenvectors and only partial eigenvalues. readINFObefore you trust anything downstream, fr fr.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 190 of file dgeev.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (the bots did this one, no cap π€β¨)
and that's the whole page, bestie β LAPACK, Version 3.12.0, and yes this gorgeous thing is SRC/dgeev.f(3). go forth and diagonalize responsibly, ily π«Άππ
π¦ 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