DLARRK(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸŽ€ dlarrk.f(3) β€” Library Functions Manual πŸŽ€

ok so bestie, the file we're talking about lives at /home/abui...RC/dlarrk.f(3) and honestly the whole thing is just vibes about one humble Fortran file. no cap.


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dlarrk.f

that's it. that's the name. it's giving "my parents named me after my zip code" but we move πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine DLARRK (n, iw, gl, gu, d, e2, pivmin, reltol, w, werr, info)

DLARRK computes one eigenvalue of a symmetric tridiagonal matrix T to suitable accuracy. literally just one. one single eigenvalue. she's focused, she's minimal, she's an icon ✨


🌸 Function/Subroutine Documentation 🌸

subroutine DLARRK (integer n, integer iw, double precision gl, double precision gu, double precision, dimension( * ) d, double precision, dimension( * ) e2, double precision pivmin, double precision reltol, double precision w, double precision werr, integer info)

DLARRK computes one eigenvalue of a symmetric tridiagonal matrix T to suitable accuracy.

πŸ’œ Purpose:

!>
!> DLARRK computes one eigenvalue of a symmetric tridiagonal
!> matrix T to suitable accuracy. This is an auxiliary code to be
!> called from DSTEMR.
!>
!> To avoid overflow, the matrix must be scaled so that its
!> largest element is no greater than overflow**(1/2) * underflow**(1/4) in absolute value, and for greatest
!> accuracy, it should not be much smaller than that.
!>
!> See W. Kahan , Report CS41, Computer Science Dept., Stanford
!> University, July 21, 1966.
!>

ok so real talk: she's an auxiliary code β€” the sidekick, the hype girl, the one who gets called from DSTEMR and does the actual eigenvalue-finding work behind the scenes. main character energy honestly 🫢

and the overflow warning is NOT a joke, bestie β€” you gotta scale your matrix so its largest element is no greater than overflow**(1/2) * underflow**(1/4) in absolute value. and for greatest accuracy, it should not be much smaller than that. so like... not too big, not too small. the goldilocks zone. if you ignore this, things get πŸ’€.

and if you want the lore, go read W. Kahan, Report CS41, Computer Science Dept., Stanford University, July 21, 1966. the founding father of vibes fr fr.


🌈 Parameters

  • N β€” N is INTEGER. The order of the tridiagonal matrix T. constraint era: N >= 0. no negative N, we don't do that here πŸ™ˆ
  • IW β€” IW is INTEGER. The index of the eigenvalues to be returned. yes, eigenvalues plural in the description even though she returns one. that's just how the doc is written, don't come for me 😭
  • GL β€” GL is DOUBLE PRECISION. that's it. that's the whole description. she's mysterious. she's a lower bound. figure it out πŸ’…
  • GU β€” GU is DOUBLE PRECISION. An upper and a lower bound on the eigenvalue. (GU is the upper one, and together with GL they're your bracketing besties πŸŽ€)
  • D β€” D is DOUBLE PRECISION array, dimension (N). The n diagonal elements of the tridiagonal matrix T. the main diagonal. the moment. the star of the show ⭐
  • E2 β€” E2 is DOUBLE PRECISION array, dimension (N-1). The (n-1) squared off-diagonal elements of the tridiagonal matrix T. squared, ok? already squared. don't square them again. i'm watching you πŸ‘€
  • PIVMIN β€” PIVMIN is DOUBLE PRECISION. The minimum pivot allowed in the Sturm sequence for T. the floor. the "absolutely not smaller than this" of pivots πŸ”₯
  • RELTOL β€” RELTOL is DOUBLE PRECISION. The minimum relative width of an interval. When an interval is narrower than RELTOL times the larger (in magnitude) endpoint, then it is considered to be sufficiently small, i.e., converged.
Note (straight from the source, bestie): this should always be at least radix*machine epsilon. yes, always. don't test her. 🚨
  • W β€” W is DOUBLE PRECISION. also the entire description. she's the eigenvalue approximation and that's all we're getting. iconic behaviour honestly ✨
  • WERR β€” WERR is DOUBLE PRECISION. The error bound on the corresponding eigenvalue approximation in W. so like, W Β± the uncertainty. slay 🫢
  • INFO β€” INFO is INTEGER. the status reporter, and she only has two moods:
    • = 0: Eigenvalue converged πŸ‘‘
    • = -1: Eigenvalue did NOT converge 😭
lowkey important: -1 means it did NOT converge. it's not "converged slightly differently", it's a no. take the L and check your scaling fr fr.

🧚 Internal Parameters:

  • FUDGE β€” DOUBLE PRECISION, default = 2. A to widen the Gershgorin intervals. (yes the sentence in the source reads "A to widen the Gershgorin intervals." β€” we don't know what kind of A, we just know it widens. leaving it exactly as the ancestors wrote it πŸ™)

⭐ Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

four institutions, one little subroutine. the collab of the century honestly πŸŽ€

Definition at line 143 of file dlarrk.f.


πŸ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code. not a human, a robot, and yet she ate πŸ’…


and that's the whole page bestie, tysm for coming to my ted talk πŸ¦‹

sign-off time: this one's from LAPACK, Version 3.12.0, dated /home/abui...RC/dlarrk.f(3) β€” go forth and compute exactly one eigenvalue, accurately, and for the love of everything scale your matrix first πŸ’–βœ¨πŸŒΈ

πŸ“¦ where this page comes from