TESTING/EIG/dstech.f(3)
π TESTING/EIG/dstech.f β¨
okay so bestie, welcome to the dstech page from the LAPACK manual (that's the Library Functions Manual situation we're in π). This is one of those auto-generated function pages, and it's honestly giving "short but mighty." Let's get into it π«Ά
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine dstech (n, a, b, eig, tol, work, info)β literally justDSTECH, that's the whole vibe π
π¦ Function/Subroutine Documentation π¦
subroutine dstech (integer n, double precision, dimension( * ) a, double precision, dimension( * ) b, double precision, dimension( * ) eig, double precision tol, double precision, dimension( * ) work, integer info)
DSTECH β bestie. the name. iconic. π
β¨ Purpose: β¨
!> !> Let T be the tridiagonal matrix with diagonal entries A(1) ,..., !> A(N) and offdiagonal entries B(1) ,..., B(N-1)). DSTECH checks to !> see if EIG(1) ,..., EIG(N) are indeed accurate eigenvalues of T. !> It does this by expanding each EIG(I) into an interval !> [SVD(I) - EPS, SVD(I) + EPS], merging overlapping intervals if !> any, and using Sturm sequences to count and verify whether each !> resulting interval has the correct number of eigenvalues (using !> DSTECT). Here EPS = TOL*MAZHEPS*MAXEIG, where MACHEPS is the !> machine precision and MAXEIG is the absolute value of the largest !> eigenvalue. If each interval contains the correct number of !> eigenvalues, INFO = 0 is returned, otherwise INFO is the index of !> the first eigenvalue in the first bad interval. !>
so like, translation for the girlies π: take your tridiagonal matrix T β diagonals from A(1) β¦ A(N), off-diagonals from B(1) β¦ B(N-1). Then it's a whole vibe check on EIG(1) β¦ EIG(N) to see if those are actually accurate eigenvalues. The way it does that is lowkey clever: it expands every EIG(I) into an interval [SVD(I) - EPS, SVD(I) + EPS], merges any overlapping intervals (slay, dedupe), and then uses Sturm sequences to count and verify that each resulting interval has the correct number of eigenvalues β that part runs through DSTECT. And EPS = TOL*MAZHEPS*MAXEIG, where MACHEPS is the machine precision and MAXEIG is the absolute value of the largest eigenvalue. If every interval has the right number of eigenvalues, you get INFO = 0. If not, INFO is the index of the first eigenvalue in the first bad interval π (yes, it's snitching on you, fr fr).
π Parameters π
N
!> N is INTEGER !> The dimension of the tridiagonal matrix T. !>
it's an INTEGER, and it's the dimension of the tridiagonal matrix T. that's the whole job. no notes π
A
!> A is DOUBLE PRECISION array, dimension (N) !> The diagonal entries of the tridiagonal matrix T. !>
DOUBLE PRECISION array, dimension (N). These are the diagonal entries of T β the main character energy of the matrix ngl β
B
!> B is DOUBLE PRECISION array, dimension (N-1) !> The offdiagonal entries of the tridiagonal matrix T. !>
DOUBLE PRECISION array, dimension (N-1) β note the N-1, bestie, it's off-diagonal so there's one fewer, that's just how tridiagonal works π These are the offdiagonal entries of T.
EIG
!> EIG is DOUBLE PRECISION array, dimension (N) !> The purported eigenvalues to be checked. !>
DOUBLE PRECISION array, dimension (N). "Purported" eigenvalues π β like the eigenvalues are claiming to be eigenvalues and DSTECH is the vibe check. π
TOL
!> TOL is DOUBLE PRECISION !> Error tolerance for checking, a multiple of the !> machine precision. !>
a plain DOUBLE PRECISION. It's the error tolerance for the checking, expressed as a multiple of the machine precision. dial it up or down, you're the main character β¨
WORK
!> WORK is DOUBLE PRECISION array, dimension (N) !>
DOUBLE PRECISION array, dimension (N). It works. that's it. that's the parameter. π
INFO
!> INFO is INTEGER !> 0 if the eigenvalues are all correct (to within !> 1 +- TOL*MAZHEPS*MAXEIG) !> >0 if the interval containing the INFO-th eigenvalue !> contains the incorrect number of eigenvalues. !>
an INTEGER, and it's the tea β:
0β the eigenvalues are all correct (to within1 +- TOL*MAZHEPS*MAXEIG) π>0β the interval containing theINFO-th eigenvalue contains the incorrect number of eigenvalues π (this is the bad interval situation, the one from the Purpose section, no cap)
heads up bestie:MAZHEPSshows up exactly like that in the original text (andMACHEPSshows up in the prose part) β I'm not touching it, I'm just the messenger π«Ά
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 100 of file dstech.f. π¦
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (yes, two Author sections, that's just how the page is laid out, we don't question the auto-generator's choices π)
okay that's the whole page bestie, every flag, every array, every dimension, every !> β nothing skipped, periodt π
LAPACK Β· Version 3.12.0 Β· TESTING/EIG/dstech.f(3) β mwah, go check those eigenvalues, you're gonna slay πβ¨π₯
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms