SSTEVD(3)
π SSTEVD(3) β the tridiagonal glow-up π
ok so bestie, this page is from the LAPACK library functions manual, and it's literally documenting /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sstevd.f β yes that's the whole path, she's extra like that. π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine SSTEVD (jobz, n, d, e, z, ldz, work, lwork, iwork, liwork, info)β this icon computes eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. periodt.
πΈ Function/Subroutine Documentation πΈ
subroutine SSTEVD (character jobz, integer n, real, dimension( * ) d, real,
dimension( * ) e, real, dimension( ldz, * ) z, integer ldz, real,
dimension( * ) work, integer lwork, integer, dimension( * ) iwork,
integer liwork, integer info)
SSTEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. no cap.
π Purpose π
!>
!> SSTEVD computes all eigenvalues and, optionally, eigenvectors of a
!> real symmetric tridiagonal matrix. If eigenvectors are desired, it
!> uses a divide and conquer algorithm.
!>
!>
ok so she computes all the eigenvalues, and if you want the eigenvectors too she'll hand those over as well β and when eigenvectors are on the menu she busts out a divide and conquer algorithm. it's giving main character energy fr fr. π₯
π¦ Parameters π¦
JOBZ
!> JOBZ is CHARACTER*1
!> = 'N': Compute eigenvalues only;
!> = 'V': Compute eigenvalues and eigenvectors.
!>
so JOBZ is the vibe check: 'N' means eigenvalues only, 'V' means eigenvalues and eigenvectors. choose wisely bestie. β¨
N
!> N is INTEGER
!> The order of the matrix. N >= 0.
!>
the order of the matrix, and she must be N >= 0. no negative orders, we don't do that here. π
D
!> D is REAL array, dimension (N)
!> On entry, the n diagonal elements of the tridiagonal matrix
!> A.
!> On exit, if INFO = 0, the eigenvalues in ascending order.
!>
D is a REAL array of dimension (N). on entry it's holding the n diagonal elements of the tridiagonal matrix A; on exit, if INFO = 0, it's got the eigenvalues in ascending order. glow-up complete. π
E
!> E is REAL array, dimension (N-1)
!> On entry, the (n-1) subdiagonal elements of the tridiagonal
!> matrix A, stored in elements 1 to N-1 of E.
!> On exit, the contents of E are destroyed.
!>
E is a REAL array of dimension (N-1). on entry: the (n-1) subdiagonal elements of the tridiagonal matrix A, stored in elements 1 to N-1 of E. on exit: the contents of E are destroyed. yeah she does not survive the process, RIP E. π
Z
!> Z is REAL array, dimension (LDZ, N)
!> If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
!> eigenvectors of the matrix A, with the i-th column of Z
!> holding the eigenvector associated with D(i).
!> If JOBZ = 'N', then Z is not referenced.
!>
Z is a REAL array of dimension (LDZ, N). if JOBZ = 'V' and INFO = 0, Z contains the orthonormal eigenvectors of A, with the i-th column of Z holding the eigenvector that goes with D(i) β cute little pairing honestly. if JOBZ = 'N' then Z is not referenced at all, she's just standing there. π§
LDZ
!> LDZ is INTEGER
!> The leading dimension of the array Z. LDZ >= 1, and if
!> JOBZ = 'V', LDZ >= max(1,N).
!>
the leading dimension of Z. must be LDZ >= 1, and if JOBZ = 'V' then LDZ >= max(1,N). rules are rules bestie. π
WORK
!> WORK is REAL array,
!> dimension (LWORK)
!> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
!>
WORK is a REAL array of dimension (LWORK). on exit, if INFO = 0, WORK(1) returns the optimal LWORK. she's helpful like that. β¨
LWORK
!> LWORK is INTEGER
!> The dimension of the array WORK.
!> If JOBZ = 'N' or N <= 1 then LWORK must be at least 1.
!> If JOBZ = 'V' and N > 1 then LWORK must be at least
!> ( 1 + 4*N + N**2 ).
!>
!> If LWORK = -1, then a workspace query is assumed; the routine
!> only calculates the optimal sizes of the WORK and IWORK
!> arrays, returns these values as the first entries of the WORK
!> and IWORK arrays, and no error message related to LWORK or
!> LIWORK is issued by XERBLA.
!>
the dimension of WORK. if JOBZ = 'N' or N <= 1 then LWORK must be at least 1. if JOBZ = 'V' and N > 1 then LWORK must be at least ( 1 + 4*N + N**2 ) β yes that's N**2, math girl. π
and here's the iconic move: if LWORK = -1, a workspace query is assumed β the routine only calculates the optimal sizes of the WORK and IWORK arrays, returns those values as the first entries of WORK and IWORK, and XERBLA does not throw any error message related to LWORK or LIWORK. a little sneak peek, no consequences. π«Ά
IWORK
!> IWORK is INTEGER array, dimension (MAX(1,LIWORK))
!> On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
!>
IWORK is an INTEGER array of dimension (MAX(1,LIWORK)). on exit, if INFO = 0, IWORK(1) returns the optimal LIWORK. twin of WORK, equally booked and busy. π
LIWORK
!> LIWORK is INTEGER
!> The dimension of the array IWORK.
!> If JOBZ = 'N' or N <= 1 then LIWORK must be at least 1.
!> If JOBZ = 'V' and N > 1 then LIWORK must be at least 3+5*N.
!>
!> If LIWORK = -1, then a workspace query is assumed; the
!> routine only calculates the optimal sizes of the WORK and
!> IWORK arrays, returns these values as the first entries of
!> the WORK and IWORK arrays, and no error message related to
!> LWORK or LIWORK is issued by XERBLA.
!>
the dimension of IWORK. if JOBZ = 'N' or N <= 1 then LIWORK must be at least 1. if JOBZ = 'V' and N > 1 then LIWORK must be at least 3+5*N. also slay, also math. π₯
and same deal: if LIWORK = -1, a workspace query is assumed β routine only calculates the optimal sizes of WORK and IWORK, returns them as the first entries of those arrays, and no error message related to LWORK or LIWORK is issued by XERBLA. π
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!> > 0: if INFO = i, the algorithm failed to converge; i
!> off-diagonal elements of E did not converge to zero.
!>
INFO is INTEGER and it's basically the mood ring of the whole call:
= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value β somebody passed something cursed, not naming names> 0: ifINFO = i, the algorithm failed to converge;ioff-diagonal elements ofEdid not converge to zero. it happens, we move. π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 155 of file sstevd.f.
π Author (yes, another one) π
Generated automatically by Doxygen for LAPACK from the source code.
ok that's the whole page bestie, every flag and every array accounting for. go forth and diagonalize. π¦π
β LAPACK, Version 3.12.0, and this page is dated /home/abui...RC/sstevd.f(3) β mwah, signing off πβ¨
π¦ 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