SRC/dlasq2.f(3)

πŸ’– SRC/dlasq2.f πŸ’–

Okay bestie, welcome to the Library Functions Manual entry for SRC/dlasq2.f β€” the header has SRC/dlasq2.f(3) on both sides of that manual name, and we’re folding it in right here at the top instead of copying the whole line. Iconic. πŸ’…

🌸 NAME 🌸

SRC/dlasq2.f

πŸ¦‹ SYNOPSIS πŸ¦‹

✨ Functions/Subroutines ✨

  • subroutine dlasq2 (n, z, info) β€” DLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd Array Z to high relative accuracy. Used by sbdsqr and sstegr.

πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

πŸŽ€ subroutine dlasq2 (integer n, double precision, dimension( * ) z, integer info) πŸŽ€

DLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd Array Z to high relative accuracy. Used by sbdsqr and sstegr.

πŸ’œ Purpose πŸ’œ

Okay so DLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix tied to the qd array Z to high relative accuracy β€” and the source really does say the high-relative-accuracy part twice, so the eigenvalues are computed to high relative accuracy in the absence of denormalization, underflow and overflow. No cap. ✨

To see how Z relates to the tridiagonal matrix, let L be a unit lower bidiagonal matrix with subdiagonals Z(2,4,6,,..) and let U be an upper bidiagonal matrix with 1's above and diagonal Z(1,3,5,,..). The tridiagonal is L*U or, if you prefer, the symmetric tridiagonal to which it is similar. πŸ¦‹

Note: DLASQ2 defines a logical variable, IEEE, which is true on machines which follow the ieee-754 floating-point standard in their handling of infinities and NaNs, and false otherwise. This variable is passed to DLASQ3.

⭐ Parameters ⭐

  • N β€” N is INTEGER. The number of rows and columns in the matrix. N >= 0.
  • Z β€” Z is DOUBLE PRECISION array, dimension ( 4*N ). On entry Z holds the qd array. On exit, entries 1 to N hold the eigenvalues in decreasing order, Z( 2*N+1 ) holds the trace, and Z( 2*N+2 ) holds the sum of the eigenvalues. If N > 2, then Z( 2*N+3 ) holds the iteration count, Z( 2*N+4 ) holds NDIVS/NIN^2, and Z( 2*N+5 ) holds the percentage of shifts that failed.
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit
    • < 0: if the i-th argument is a scalar and had an illegal value, then INFO = -i; if the i-th argument is an array and the j-entry had an illegal value, then INFO = -(i*100+j)
    • > 0: the algorithm failed
      • = 1: a split was marked by a positive value in E
      • = 2: current block of Z not diagonalized after 100*N iterations (in inner while loop). On exit Z holds a qd array with the same eigenvalues as the given Z.
      • = 3: termination criterion of outer while loop not met (program created more than N unreduced blocks)

🌟 Author 🌟

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

πŸ¦‹ Further Details πŸ¦‹

Local Variables: I0:N0 defines a current unreduced segment of Z. The shifts are accumulated in SIGMA. Iteration count is in ITER. Ping-pong is controlled by PP (alternates between 0 and 1).

Definition at line 111 of file dlasq2.f.

πŸ’« Author πŸ’«

Generated automatically by Doxygen for LAPACK from the source code.


Sign-off from the footer, bestie: LAPACK Version 3.12.0, page SRC/dlasq2.f(3) β€” the original footer doesn’t show a separate date, so no date to report here. Mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from