SRC/dlaneg.f(3)

πŸ’– NAME πŸ’–

Okay bestie, welcome to the Library Functions Manual page for SRC/dlaneg.f β€” that's literally the whole name section. It's giving "just the file name," and honestly? Iconic minimalism. πŸŽ€

✨ SYNOPSIS ✨

🧚 Functions/Subroutines 🧚

  • integer function dlaneg (n, d, lld, sigma, pivmin, r) β€” DLANEG computes the Sturm count.

πŸŽ€ Function/Subroutine Documentation πŸŽ€

Here's the full signature, exactly as it appears, because we do not mess with source code in this group chat:

   integer function dlaneg (integer n, double precision, dimension( * ) d,
       double precision, dimension( * ) lld, double precision sigma, double
       precision pivmin, integer r)

DLANEG computes the Sturm count.

Purpose

So what does it actually do? DLANEG computes the Sturm count: the number of negative pivots you encounter while factoring the tridiagonal matrix T - sigma I = L D L^T. This implementation works directly on the factors without forming the tridiagonal matrix T. The Sturm count is also the number of eigenvalues of T less than sigma. It's literally counting eigenvalues via pivots, iykyk. πŸ’…

This routine is called from DLARRB. Noted, bestie. πŸ“Œ

Now, the tea: the current routine does not use the PIVMIN parameter, but rather requires IEEE-754 propagation of Infinities and NaNs. It also has no input range restrictions, but it does require default exception handling such that x/0 produces Inf when x is non-zero, and Inf/Inf produces NaN. That's the vibe check: special floating-point behavior is load-bearing here. 🫢

For more information, see: Marques, Riedy, and Voemel, SIAM Journal on Scientific Computing, v28, n5, 2006. DOI 10.1137/050641624 (Tech report version in LAWN 172 with the same title.)

Parameters

  • N β€” N is INTEGER. The order of the matrix. πŸ’–
  • D β€” D is DOUBLE PRECISION array, dimension (N). The N diagonal elements of the diagonal matrix D.
  • LLD β€” LLD is DOUBLE PRECISION array, dimension (N-1). The (N-1) elements L(i)*L(i)*D(i).
  • SIGMA β€” SIGMA is DOUBLE PRECISION. Shift amount in T - sigma I = L D L^T.
  • PIVMIN β€” PIVMIN is DOUBLE PRECISION. The minimum pivot in the Sturm sequence. May be used when zero pivots are encountered on non-IEEE-754 architectures. (Remember: this routine doesn't use PIVMIN but rather requires IEEE-754 behavior β€” so this is a "may be used" situation, not a "this is doing the work here" situation. πŸ™ˆ)
  • R β€” R is INTEGER. The twist index for the twisted factorization that is used for the negcount. Twisted factorization? Ate. πŸ”₯

✨ Author ✨

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

🌸 Contributors 🌸

  • Osni Marques, LBNL/NERSC, USA
  • Christof Voemel, University of California, Berkeley, USA
  • Jason Riedy, University of California, Berkeley, USA

Definition at line 117 of file dlaneg.f.

πŸ’… Author πŸ’…

Generated automatically by Doxygen for LAPACK from the source code.


Cute sign-off time, bestie: that footer is LAPACK, Version 3.12.0, page SRC/dlaneg.f(3) β€” and if you were looking for a date, the original footer doesn't give one, so I'm not inventing it. Periodt. πŸ’œ

πŸ“¦ where this page comes from