TESTING/EIG/dstech.f(3)

πŸ“¦
version 3.12.1 Β· 3 versions
, in arch rolling

πŸ’… 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 just DSTECH, 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 within 1 +- TOL*MAZHEPS*MAXEIG) πŸŽ‰
  • >0 β€” the interval containing the INFO-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: MAZHEPS shows up exactly like that in the original text (and MACHEPS shows 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