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

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

πŸ’… NAME πŸ’…

ok so this whole page is literally about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dsyev.f β€” that's the file, that's the name, that's the whole vibe. it lives in the Library Functions Manual, bestie, and it's out here documenting one (1) very iconic Fortran subroutine. πŸŽ€


✨ SYNOPSIS ✨

πŸ¦‹ Functions/Subroutines

subroutine DSYEV (jobz, uplo, n, a, lda, w, work, lwork, info)

DSYEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices β€” periodt. πŸ’œ


🌸 Function/Subroutine Documentation 🌸

🫢 the actual signature (no cap, exactly this)

subroutine DSYEV (character jobz, character uplo, integer n, double
    precision, dimension( lda, * ) a, integer lda, double precision,
    dimension( * ) w, double precision, dimension( * ) work, integer lwork,
    integer info)

and what it does, one more time for the people in the back: DSYEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices. main character energy fr fr. πŸ‘‘


πŸ’– Purpose πŸ’–

so the source has this as a doc block that starts with !> (that's just how the comments are written in the file, it's giving doxygen core):

!> DSYEV computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. !>

that's it, that's the purpose. real symmetric matrix A, all the eigenvalues, and eigenvectors only if you ask nicely. lowkey obsessed. ⭐


🧚 Parameters 🧚

🌈 JOBZ

  • JOBZ is CHARACTER*1 β€” it's one single character, choose wisely bestie:
    • = 'N': Compute eigenvalues only; β€” eigenvalues only, we keep it chill.
    • = 'V': Compute eigenvalues and eigenvectors. β€” go off, get the whole package. πŸ’…

πŸŽ€ UPLO

  • UPLO is CHARACTER*1 β€” which triangle of the matrix you're actually storing:
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.

πŸ“ N

  • N is INTEGER β€” The order of the matrix A. N >= 0. so like, zero is allowed, negative is not, do not test her.

✨ A

  • A is DOUBLE PRECISION array, dimension (LDA, N) β€” the whole plot, honestly:
    • On entry, the symmetric matrix A. If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A.
    • On exit, if JOBZ = 'V', then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A.
    • > ⚠️ heads up, this is the important part: If JOBZ = 'N', then on exit the lower triangle (if UPLO='L') or the upper triangle (if UPLO='U') of A, including the diagonal, is destroyed. β€” literally destroyed, gone, delulu if you think your input survives. 😭

πŸ¦‹ LDA

  • LDA is INTEGER β€” The leading dimension of the array A. LDA >= max(1,N). that's the rule, respect it.

πŸ’œ W

  • W is DOUBLE PRECISION array, dimension (N) β€” If INFO = 0, the eigenvalues in ascending order. cute, sorted, organized, unlike my tabs. πŸŽ€

🌸 WORK

  • WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) β€” the workspace bestie, she works so the routine can vibe. On exit, if INFO = 0, WORK(1) returns the optimal LWORK.

🧚 LWORK

  • LWORK is INTEGER β€” The length of the array WORK. LWORK >= max(1,3*N-1).
    • For optimal efficiency, LWORK >= (NB+2)*N, β€” where NB is the blocksize for DSYTRD returned by ILAENV. ✨ efficiency era ✨
    • 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. β€” the -1 trick, iykyk. 🫢

πŸ‘‘

  • INFO is INTEGER β€” the vibe check at the end, read it carefully:
    • = 0: successful exit β€” slay, we ate. βœ…
    • < 0: if INFO = -i, the i-th argument had an illegal value β€” you passed something cursed, check your args. πŸ’€
    • > 0: if INFO = i, the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. β€” it tried, it really did, but no convergence. 🫠

πŸ“Œ also: Definition at line 131 of file dsyev.f. so that's where she lives in the source. no cap.

πŸ‘‘ Author πŸ‘‘

the legends behind this:

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

absolute icons, all four of them. 🌈


πŸ’« Author (the other one) πŸ’«

Generated automatically by Doxygen for LAPACK from the source code. β€” not me writing this by hand, a robot did it, and she did great. πŸ€–πŸ’…


ok that's the whole page bestie, drink some water. this one's from LAPACK, Version 3.12.0, served fresh from /home/abui...RC/dsyev.f(3) β€” mwah, ily, go compute some eigenvalues πŸ¦‹πŸ’–πŸŽ€

πŸ“¦ where this page comes from