SUBROUTINE SLASQ2( M, Q, E, QQ, EE, EPS, TOL2, SMALL2, SUP, KEND, INFO ) INTEGER INFO, KEND, M REAL EPS, SMALL2, SUP, TOL2 REAL E( * ), EE( * ), Q( * ), QQ( * )
SLASQ2 computes the singular values of a real N-by-N unreduced bidiagonal matrix with squared diagonal elements in Q and squared off-diagonal elements in E. The singular values are computed to relative accuracy TOL, barring over/underflow or denormalization.
M (input) INTEGER The number of rows and columns in the matrix. M >= 0. Q (output) REAL array, dimension (M) On normal exit, contains the squared singular values. E (workspace) REAL array, dimension (M) QQ (input/output) REAL array, dimension (M) On entry, QQ contains the squared diagonal elements of the bidiagonal matrix whose SVD is desired. On exit, QQ is overwritten. EE (input/output) REAL array, dimension (M) On entry, EE(1:N-1) contains the squared off-diagonal elements of the bidiagonal matrix whose SVD is desired. On exit, EE is overwritten. EPS (input) REAL Machine epsilon. TOL2 (input) REAL Desired relative accuracy of computed eigenvalues as defined in SLASQ1. SMALL2 (input) REAL A threshold value as defined in SLASQ1. SUP (input/output) REAL Upper bound for the smallest eigenvalue. KEND (input/output) INTEGER Index where minimum d occurs. INFO (output) INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, the algorithm did not converge; i specifies how many superdiagonals did not converge.