lasq2(3)

✨ lasq2 ✨

okay so this one is from the Library Functions Manual, and it's literally the page for lasq2 β€” aka the dqds step πŸŽ€ (yes that's the whole NAME, short and iconic, we love a minimal queen).


🌸 SYNOPSIS 🌸

πŸ’« Functions πŸ’«

  • 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.
  • subroutine slasq2 (n, z, info) β€” SLASQ2 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.

(bestie they are the same function, one is just the double precision version and one is the real version. twins fr fr πŸ‘―)


πŸ¦‹ Detailed Description πŸ¦‹

like, the whole point of this page is the function documentation, so let's get into it ⬇️


πŸ”₯ Function 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 🌈

DLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd array Z to high relative accuracy are computed to high relative accuracy, in the absence of denormalization, underflow and overflow.

To see the relation of Z 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 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.


🧁 subroutine slasq2 (integer n, real, dimension( * ) z, integer info)

SLASQ2 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 🌈

SLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd array Z to high relative accuracy are computed to high relative accuracy, in the absence of denormalization, underflow and overflow.

To see the relation of Z 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: SLASQ2 defines a logical variable, IEEE, which is true on machines which follow ieee-754 floating-point standard in their handling of infinities and NaNs, and false otherwise. This variable is passed to SLASQ3.

πŸ“ Parameters πŸ“

  • N β€” N is INTEGER. The number of rows and columns in the matrix. N >= 0.
  • Z β€” Z is REAL 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 slasq2.f.


🫢 Author 🫢

Generated automatically by Doxygen for LAPACK from the source code. (not a human, not a vibe, just a doc generator doing its thing πŸ’…)


okay that's the whole page bestie, and the tea at the very bottom: this is LAPACK, Version 3.12.0 πŸŽ€βœ¨ β€” that's the source/version line, consider it your cute sign-off. mwah, go diagonalize something πŸ’–

πŸ“¦ where this page comes from