DSTEVD(3)
π DSTEVD(3) β bestie, it's giving eigenvalue slay
okay so first things first: this page lives in the Library Functions Manual, and the file it's documenting is literally
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dstevd.f
like that's the whole NAME section, no cap. it's a .f file, it's a library function, that's the vibe. π
β¨ SYNOPSIS β¨
Functions/Subroutines
here's the little one, the group-chat shorthand version:
subroutine DSTEVD (jobz, n, d, e, z, ldz, work, lwork, iwork, liwork,
info)
and what it does (iconic behaviour, honestly):
DSTEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
πΈ Function/Subroutine Documentation πΈ
okay here's the full glow-up signature, every type and dimension in place, not one thing dropped:
subroutine DSTEVD (character jobz, integer n, double precision, dimension( *
) d, double precision, dimension( * ) e, double precision, dimension(
ldz, * ) z, integer ldz, double precision, dimension( * ) work, integer
lwork, integer, dimension( * ) iwork, integer liwork, integer info)
and again for the people in the back β DSTEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices.
π¦ Purpose:
so the deal is: DSTEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric tridiagonal matrix. if you want eigenvectors, it pulls out a divide and conquer algorithm β fancy, she ate. π
the original source has all this wrapped in !> Fortran comment markers, in case you were wondering where the vibe came from, but the facts are the facts.
π Parameters
JOBZβJOBZisCHARACTER*1. and it's literally just:= 'N'means compute eigenvalues only;= 'V'means compute eigenvalues and eigenvectors. pick your fighter. β¨NβNisINTEGER, the order of the matrix.N >= 0. (yes, zero is allowed, she's flexible.)DβDisDOUBLE PRECISION array, dimension (N). on entry: the n diagonal elements of the tridiagonal matrixA. on exit, ifINFO = 0, it's holding the eigenvalues in ascending order. glow-up complete. πEβEisDOUBLE PRECISION array, dimension (N-1). on entry: the (n-1) subdiagonal elements of the tridiagonal matrixA, stored in elements 1 to N-1 ofE. on exit, the contents ofEare destroyed π β no cap, it does not survive the call, do not come looking for it.ZβZisDOUBLE PRECISION array, dimension (LDZ, N). ifJOBZ = 'V', then ifINFO = 0,Zcontains the orthonormal eigenvectors of the matrixA, with the i-th column ofZholding the eigenvector associated withD(i). and ifJOBZ = 'N', thenZis not referenced β she's not even invited to the party. πLDZβLDZisINTEGER, the leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N). read it and weep. π«ΆWORKβWORKisDOUBLE PRECISION array, dimension (LWORK). on exit, ifINFO = 0,WORK(1)returns the optimalLWORK. so she tells you what she really needed, after the fact. classic. πLWORKβLWORKisINTEGER, the dimension of the arrayWORK. the rules, bestie:- If
JOBZ = 'N'orN <= 1thenLWORKmust be at least 1. - If
JOBZ = 'V'andN > 1thenLWORKmust 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 theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. so-1is the "just tell me how much room you need" move. π§
- If
IWORKβIWORKisINTEGER array, dimension (MAX(1,LIWORK)). on exit, ifINFO = 0,IWORK(1)returns the optimalLIWORK. π₯LIWORKβLIWORKisINTEGER, the dimension of the arrayIWORK. again, rules:- If
JOBZ = 'N'orN <= 1thenLIWORKmust be at least 1. - If
JOBZ = 'V'andN > 1thenLIWORKmust be at least3+5*N. - If
LIWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. same deal, different array. π
- If
INFOβINFOisINTEGER, the receipts:= 0: successful exit β¨< 0: ifINFO = -i, the i-th argument had an illegal value π¨> 0: ifINFO = i, the algorithm failed to converge;ioff-diagonal elements ofEdid not converge to zero π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 155 of file dstevd.f.
β Author
Generated automatically by Doxygen for LAPACK from the source code. (the robots wrote this one, respectfully π«‘)
and that's the tea, bestie β every flag, every dimension, every INFO code, all present and accounted for. go forth and diagonalise. π
so yeah, this page is from LAPACK, Version 3.12.0, and it's the manpage for
/home/abui...RC/dstevd.f(3)
mwah, ty for reading, slay, periodt. ππ¦β¨
π¦ 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