SRC/cgeev.f(3)

πŸ’… SRC/cgeev.f β€” from the LAPACK Library Functions Manual, bestie

okay so bestie, grab your iced coffee πŸ“ because this one is a whole iconic linear algebra moment. we're looking at SRC/cgeev.f, and no cap, it's the girlboss that cracks open complex nonsymmetric matrices and hands you back their eigenvalues and eigenvectors.


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine cgeev (jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info) β€” lowkey does exactly this: CGEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices πŸ’–

🫢 Function/Subroutine Documentation 🫢

subroutine cgeev (character jobvl, character jobvr, integer n, complex,
    dimension( lda, * ) a, integer lda, complex, dimension( * ) w, complex,
    dimension( ldvl, * ) vl, integer ldvl, complex, dimension( ldvr, * ) vr,
    integer ldvr, complex, dimension( * ) work, integer lwork, real,
    dimension( * ) rwork, integer info)

CGEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ✨

πŸŽ€ Purpose πŸŽ€

so the tea is:

CGEEV computes for an N-by-N complex nonsymmetric matrix A, the eigenvalues and, optionally, 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.

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).

The computed eigenvectors are normalized to have Euclidean norm equal to 1 and largest component real. πŸ’… periodt, that's the whole flex.


🌸 Parameters 🌸

okay here's the cast, main character energy only:

JOBVL

JOBVL is CHARACTER*1

  • = 'N': left eigenvectors of A are not computed;
  • = 'V': left eigenvectors of are computed.

JOBVR

JOBVR is CHARACTER*1

  • = 'N': right eigenvectors of A are not computed;
  • = 'V': right eigenvectors of A are computed.

N

N is INTEGER

The order of the matrix A. N >= 0.

A

A is COMPLEX array, dimension (LDA,N)

On entry, the N-by-N matrix A. On exit, A has been overwritten. πŸ™ˆ girl got replaced, that's just how it goes.

LDA

LDA is INTEGER

The leading dimension of the array A. LDA >= max(1,N).

W

W is COMPLEX array, dimension (N)

W contains the computed eigenvalues. πŸ‘‘

VL

VL is COMPLEX array, dimension (LDVL,N)

If JOBVL = 'V', the left eigenvectors u(j) are stored one after another in the columns of VL, in the same order as their eigenvalues.

If JOBVL = 'N', VL is not referenced.

u(j) = VL(:,j), the j-th column of VL.

LDVL

LDVL is INTEGER

The leading dimension of the array VL. LDVL >= 1; if JOBVL = 'V', LDVL >= N.

VR

VR is COMPLEX array, dimension (LDVR,N)

If JOBVR = 'V', the right eigenvectors v(j) are stored one after another in the columns of VR, in the same order as their eigenvalues.

If JOBVR = 'N', VR is not referenced.

v(j) = VR(:,j), the j-th column of VR.

LDVR

LDVR is INTEGER

The leading dimension of the array VR. LDVR >= 1; if JOBVR = 'V', LDVR >= N.

WORK

WORK is COMPLEX array, dimension (MAX(1,LWORK))

On exit, if INFO = 0, WORK(1) returns the optimal LWORK. πŸ‘€ she's telling you what she needs, listen.

LWORK

LWORK is INTEGER

The dimension of the array WORK. LWORK >= max(1,2*N). For good performance, LWORK must generally be larger. πŸ”₯

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. iykyk, it's the "just asking, not committing" vibe.

RWORK

RWORK is REAL array, dimension (2*N)

INFO

INFO is INTEGER

  • = 0: successful exit πŸŽ‰
  • < 0: if INFO = -i, the i-th argument had an illegal value. πŸ’€
  • > 0: if INFO = i, the QR algorithm failed to compute all the eigenvalues, and no eigenvectors have been computed; elements i+1:N of W contain eigenvalues which have converged.
ngl, that < 0 and > 0 situation is not the slay we wanted, but at least INFO tells you exactly which girl is causing drama.

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 178 of file cgeev.f.


🌈 Author (again, the meta one) 🌈

Generated automatically by Doxygen for LAPACK from the source code. yes bestie, the docs wrote themselves, that's the automation dream. 🧚


Version check: this whole thing is from LAPACK, Version 3.12.0, and it's the SRC/cgeev.f(3) page. mwah, go compute something gorgeous πŸ’–βœ¨
πŸ“¦ where this page comes from