/home/abui...RC/zgees.f(3)
okay bestie, welcome to the manpage for zgees.f π
this is from the Library Functions Manual, section 3, and it's literally the ZGEES subroutine from LAPACK. The file path is /home/abui...RC/zgees.f(3) if you need to cite your sources. Let's get into it, because this one is giving major linear algebra energy and I'm obsessed. β¨
π NAME π
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zgees.f
that's the whole name section, bestie. She's just a path. Iconic. π
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine ZGEES (jobvs, sort, select, n, a, lda, sdim, w, vs, ldvs,
work, lwork, rwork, bwork, info)
ZGEES computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE matrices. (That's the whole point, fr fr.) π₯
π¦ Function/Subroutine Documentation π¦
subroutine ZGEES (character jobvs, character sort, external select, integer
n, complex*16, dimension( lda, * ) a, integer lda, integer sdim,
complex*16, dimension( * ) w, complex*16, dimension( ldvs, * ) vs,
integer ldvs, complex*16, dimension( * ) work, integer lwork, double
precision, dimension( * ) rwork, logical, dimension( * ) bwork, integer
info)
ZGEES computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE matrices.
π₯ Purpose π₯
okay so here's the tea: ZGEES computes the eigenvalues, the Schur form T, and (if you want) the matrix of Schur vectors Z for an N-by-N complex nonsymmetric matrix A. That gives you the Schur factorization: A = Z*T*(Z**H). β¨
Optionally, it also orders the eigenvalues on the diagonal of the Schur form so that the selected eigenvalues are at the top left. Then the leading columns of Z form an orthonormal basis for the invariant subspace corresponding to the selected eigenvalues. π¦
And just so we're clear: a complex matrix is in Schur form if it is upper triangular. That's the vibe check. π
π Parameters π
JOBVSβ this one'sCHARACTER*1and it's literally just saying whether you want the Schur vectors or not:= 'N': Schur vectors are not computed (no cap, just eigenvalues and Schur form);= 'V': Schur vectors are computed (slay, you get the whole package).
SORTβCHARACTER*1, controls whether the eigenvalues get ordered on the diagonal of the Schur form:= 'N': Eigenvalues are not ordered (default vibe);= 'S': Eigenvalues are ordered (seeSELECT).
SELECTβ okay so this is aLOGICAL FUNCTIONof oneCOMPLEX*16argument. You have to declare itEXTERNALin the calling subroutine (don't forget, bestie).- If
SORT = 'S',SELECTis used to pick which eigenvalues get ordered to the top left of the Schur form. - If
SORT = 'N',SELECTis literally not referenced at all. - The eigenvalue
W(j)is selected ifSELECT(W(j))is true.
- If
NβINTEGER, the order of the matrixA. Must beN >= 0.AβCOMPLEX*16array, dimension(LDA,N).- On entry: the
N-by-NmatrixA. - On exit:
Ahas been overwritten by its Schur formT(so don't expect your original matrix back, she's gone π).
- On entry: the
LDAβINTEGER, the leading dimension of the arrayA. Must beLDA >= max(1,N).SDIMβINTEGER, and it depends onSORT:- If
SORT = 'N', thenSDIM = 0. - If
SORT = 'S', thenSDIM =the number of eigenvalues for whichSELECTis true.
- If
WβCOMPLEX*16array, dimension(N).Wcontains the computed eigenvalues, in the same order that they appear on the diagonal of the output Schur formT.VSβCOMPLEX*16array, dimension(LDVS,N).- If
JOBVS = 'V',VScontains the unitary matrixZof Schur vectors. - If
JOBVS = 'N',VSis not referenced.
- If
LDVSβINTEGER, the leading dimension of the arrayVS. Must beLDVS >= 1; ifJOBVS = 'V', thenLDVS >= N.WORKβCOMPLEX*16array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβINTEGER, the dimension of the arrayWORK. Must beLWORK >= max(1,2*N). For good performance,LWORKmust generally be larger (don't skimp).- If
LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. (So it's like a little sneak peek, iykyk.)
- If
RWORKβDOUBLE PRECISIONarray, dimension(N).BWORKβLOGICALarray, dimension(N). Not referenced ifSORT = 'N'.INFOβINTEGER, the exit status report:= 0: successful exit (we love to see it);< 0: ifINFO = -i, thei-th argument had an illegal value;> 0: ifINFO = i, andiis:<= N: the QR algorithm failed to compute all the eigenvalues; elements1:ILO-1andi+1:NofWcontain those eigenvalues which have converged; ifJOBVS = 'V',VScontains the matrix which reducesAto its partially converged Schur form.= N+1: the eigenvalues could not be reordered because some eigenvalues were too close to separate (the problem is very ill-conditioned);= N+2: after reordering, roundoff changed values of some complex eigenvalues so that leading eigenvalues in the Schur form no longer satisfySELECT = .TRUE.. This could also be caused by underflow due to scaling.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 195 of file zgees.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
bestie, that's the whole manpage! π this came from LAPACK Version 3.12.0 and the file is /home/abui...RC/zgees.f(3). Go forth and compute those Schur forms, you iconic linear algebra main character. π¦β¨π
π¦ 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