SRC/slasq2.f(3)
π slasq2.f β qd array realness π
Okay bestie, you're on the Library Functions Manual page for SRC/slasq2.f, and it's literally all about one subroutine: slasq2. It's giving high-relative-accuracy eigenvalue main character energy, no cap. β¨
πΈ NAME πΈ
SRC/slasq2.f β that's the file, that's the name, and honestly? Iconic. π«Ά
π¦ SYNOPSIS π¦
Functions/Subroutines
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. π
π Function/Subroutine Documentation π
Here's the full signature, typed out exactly so nobody comes for us in the comments:
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
Okay so the source comment says SLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd array Z to high relative accuracy. Those eigenvalues are computed to high relative accuracy in the absence of denormalization, underflow and overflow. Yes, the source says high relative accuracy twice β we're honoring the repetition, bestie. π
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 :SLASQ2defines 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 toSLASQ3.
π 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, thenINFO = -i; if the i-th argument is an array and the j-entry had an illegal value, thenINFO = -(i*100+j)> 0: the algorithm failed= 1, a split was marked by a positive value inE= 2, current block ofZnot diagonalized after100*Niterations (in inner while loop). On exitZholds a qd array with the same eigenvalues as the givenZ.= 3, termination criterion of outer while loop not met (program created more thanNunreduced 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.
mwah π β this page is brought to you by LAPACK Version 3.12.0 and SRC/slasq2.f(3). Bye bestie, go diagonalize something pretty! πβ¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms