SLAED0(3)
β¨ 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,Qcontains 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 >= NifICOMPQ = 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,Ehas been destroyed. π yeah, destroyed. she does not survive. don't come crying to me about yourEarray afterwards.QβQ is REAL array, dimension (LDQ, N). On entry,Qmust contain an N-by-N orthogonal matrix.- If
ICOMPQ = 0βQis not referenced. - If
ICOMPQ = 1β On entry,Qis 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,Qwill be the identity matrix. On exit,Qcontains the eigenvectors of the tridiagonal matrix. glow-up arc complete π¦
- If
LDQβLDQ is INTEGER. The leading dimension of the arrayQ. If eigenvectors are desired, thenLDQ >= 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 whenICOMPQ = 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 arrayQSTORE. IfICOMPQ = 1, thenLDQS >= max(1,N). In any case,LDQS >= 1.WORKβWORK is REAL array.- If
ICOMPQ = 0or1, the dimension ofWORKmust be at least
- If
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 ofWORKmust 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 = 0or1, the dimension ofIWORKmust be at least
- If
6 + 6*N + 5*N*lg N.
( lg( N ) = smallest integer k
such that 2^k >= N )
- If
ICOMPQ = 2, the dimension ofIWORKmust be at least
3 + 5*N.
INFOβINFO is INTEGER, the vibe check at the end:= 0: successful exit. slay π< 0: ifINFO = -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 columnsINFO/(N+1)throughmod(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
- 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