/home/abui...RC/zgees.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

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's CHARACTER*1 and 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 (see SELECT).
  • SELECT β€” okay so this is a LOGICAL FUNCTION of one COMPLEX*16 argument. You have to declare it EXTERNAL in the calling subroutine (don't forget, bestie).
    • If SORT = 'S', SELECT is used to pick which eigenvalues get ordered to the top left of the Schur form.
    • If SORT = 'N', SELECT is literally not referenced at all.
    • The eigenvalue W(j) is selected if SELECT(W(j)) is true.
  • N β€” INTEGER, the order of the matrix A. Must be N >= 0.
  • A β€” COMPLEX*16 array, dimension (LDA,N).
    • On entry: the N-by-N matrix A.
    • On exit: A has been overwritten by its Schur form T (so don't expect your original matrix back, she's gone πŸ’€).
  • LDA β€” INTEGER, the leading dimension of the array A. Must be LDA >= max(1,N).
  • SDIM β€” INTEGER, and it depends on SORT:
    • If SORT = 'N', then SDIM = 0.
    • If SORT = 'S', then SDIM = the number of eigenvalues for which SELECT is true.
  • W β€” COMPLEX*16 array, dimension (N). W contains the computed eigenvalues, in the same order that they appear on the diagonal of the output Schur form T.
  • VS β€” COMPLEX*16 array, dimension (LDVS,N).
    • If JOBVS = 'V', VS contains the unitary matrix Z of Schur vectors.
    • If JOBVS = 'N', VS is not referenced.
  • LDVS β€” INTEGER, the leading dimension of the array VS. Must be LDVS >= 1; if JOBVS = 'V', then LDVS >= N.
  • WORK β€” COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  • LWORK β€” INTEGER, the dimension of the array WORK. Must be LWORK >= max(1,2*N). For good performance, LWORK must generally be larger (don't skimp).
    • 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. (So it's like a little sneak peek, iykyk.)
  • RWORK β€” DOUBLE PRECISION array, dimension (N).
  • BWORK β€” LOGICAL array, dimension (N). Not referenced if SORT = 'N'.
  • INFO β€” INTEGER, the exit status report:
    • = 0: successful exit (we love to see it);
    • < 0: if INFO = -i, the i-th argument had an illegal value;
    • > 0: if INFO = i, and i is:
      • <= N: the QR algorithm failed to compute all the eigenvalues; elements 1:ILO-1 and i+1:N of W contain those eigenvalues which have converged; if JOBVS = 'V', VS contains the matrix which reduces A to 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 satisfy SELECT = .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