SLAED0(3)

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

✨ SLAED0(3) ✨ β€” like, the whole manual page, but make it make sense

okay bestie so this is the manual page for SLAED0 from the Library Functions Manual, and the source file it documents is literally

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/slaed0.f

like that's the whole path, no I'm not shortening it, it's giving "absolute path realness" πŸ’…


🌸 NAME 🌸

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/slaed0.f

yes queen, that's the NAME section. it's a .f file. we move.


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine SLAED0 (icompq, qsiz, n, d, e, q, ldq, qstore, ldqs, work,
    iwork, info)

SLAED0 used by SSTEDC. Computes all eigenvalues and corresponding eigenvectors of an unreduced symmetric tridiagonal matrix using the divide and conquer method. πŸ”₯


πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

subroutine SLAED0 (integer icompq, integer qsiz, integer n, real, dimension(
    * ) d, real, dimension( * ) e, real, dimension( ldq, * ) q, integer ldq,
    real, dimension( ldqs, * ) qstore, integer ldqs, real, dimension( * )
    work, integer, dimension( * ) iwork, integer info)

SLAED0 used by SSTEDC. Computes all eigenvalues and corresponding eigenvectors of an unreduced symmetric tridiagonal matrix using the divide and conquer method. no cap, that's the whole vibe.

πŸŽ€ Purpose: πŸŽ€

!>
!> SLAED0 computes all eigenvalues and corresponding eigenvectors of a
!> symmetric tridiagonal matrix using the divide and conquer method.
!>

literally what it says on the tin bestie πŸ’–


⭐ Parameters ⭐

okay so this is the part where you actually pay attention, because every single one of these is load-bearing 🫢

  • ICOMPQ β€” ICOMPQ is INTEGER, and it's the main character of this whole function, honestly:
    • = 0: Compute eigenvalues only.
    • = 1: Compute eigenvectors of original dense symmetric matrix also. On entry, Q contains the orthogonal matrix used to reduce the original matrix to tridiagonal form.
    • = 2: Compute eigenvalues and eigenvectors of tridiagonal matrix.
  • QSIZ β€” QSIZ is INTEGER. The dimension of the orthogonal matrix used to reduce the full matrix to tridiagonal form. QSIZ >= N if ICOMPQ = 1. ⚠️ like, actually respect that bound, it's not decorative.
  • N β€” N is INTEGER. The dimension of the symmetric tridiagonal matrix. N >= 0.
  • D β€” D is REAL array, dimension (N). On entry, the main diagonal of the tridiagonal matrix. On exit, its eigenvalues. so it comes in as a diagonal and leaves as a glow-up ✨
  • E β€” E is REAL array, dimension (N-1). The off-diagonal elements of the tridiagonal matrix. On exit, E has been destroyed. πŸ’€ yeah, destroyed. she does not survive. don't come crying to me about your E array afterwards.
  • Q β€” Q is REAL array, dimension (LDQ, N). On entry, Q must contain an N-by-N orthogonal matrix.
    • If ICOMPQ = 0 β€” Q is not referenced.
    • If ICOMPQ = 1 β€” On entry, Q is a subset of the columns of the orthogonal matrix used to reduce the full matrix to tridiagonal form corresponding to the subset of the full matrix which is being decomposed at this time.
    • If ICOMPQ = 2 β€” On entry, Q will be the identity matrix. On exit, Q contains the eigenvectors of the tridiagonal matrix. glow-up arc complete πŸ¦‹
  • LDQ β€” LDQ is INTEGER. The leading dimension of the array Q. If eigenvectors are desired, then LDQ >= max(1,N). In any case, LDQ >= 1. in any case, bestie. even the silly little cases.
  • QSTORE β€” QSTORE is REAL array, dimension (LDQS, N). Referenced only when ICOMPQ = 1. Used to store parts of the eigenvector matrix when the updating matrix multiplies take place. she's a supporting character but she's doing important work 🫢
  • LDQS β€” LDQS is INTEGER. The leading dimension of the array QSTORE. If ICOMPQ = 1, then LDQS >= max(1,N). In any case, LDQS >= 1.
  • WORK β€” WORK is REAL array.
    • If ICOMPQ = 0 or 1, the dimension of WORK must be at least
1 + 3*N + 2*N*lg N + 3*N**2
( lg( N ) = smallest integer k
            such that 2^k >= N )
  • If ICOMPQ = 2, the dimension of WORK must be at least
4*N + N**2.
ngl this is the part everyone under-allocates and then blames the library for. size it right the first time, it's giving self-care. 😭
  • IWORK β€” IWORK is INTEGER array.
    • If ICOMPQ = 0 or 1, the dimension of IWORK must be at least
6 + 6*N + 5*N*lg N.
( lg( N ) = smallest integer k
            such that 2^k >= N )
  • If ICOMPQ = 2, the dimension of IWORK must be at least
3 + 5*N.
  • INFO β€” INFO is INTEGER, the vibe check at the end:
    • = 0: successful exit. slay πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value. you passed something cursed. πŸ™ˆ
    • > 0: The algorithm failed to compute an eigenvalue while working on the submatrix lying in rows and columns INFO/(N+1) through mod(INFO,N+1). πŸ’€ yeah it's telling you exactly which submatrix betrayed you. very specific. very iconic. very rude.

🌈 Author 🌈

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

(the whole group chat contributed, honestly)


πŸ’œ Contributors: πŸ’œ

Jeff Rutter, Computer Science Division, University of California at Berkeley, USA

shoutout Jeff, we see you 🫢


πŸ“ Definition at line 170 of file slaed0.f. πŸ“

that's it, that's where she lives. line one-seven-zero. iykyk.


🧚 Author 🧚

Generated automatically by Doxygen for LAPACK from the source code.

(so if the formatting's weird, blame Doxygen, not me πŸ’…)


okay that's the whole page, nothing skipped, nothing invented, every flag and bound and destroyed array accounted for ✨ mwah, go compile something beautiful πŸŽ€

β€” LAPACK, Version 3.12.0, dated /home/abui...RC/slaed0.f(3) β€” see you in the next man page bestie, love u πŸ’–

πŸ“¦ where this page comes from