SUBROUTINE DLASQ2( M, Q, E, QQ, EE, EPS, TOL2, SMALL2, SUP, KEND, INFO ) INTEGER INFO, KEND, M DOUBLE PRECISION EPS, SMALL2, SUP, TOL2 DOUBLE PRECISION E( * ), EE( * ), Q( * ), QQ( * )
DLASQ2 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) DOUBLE PRECISION array, dimension (M) On normal exit, contains the squared singular values. E (workspace) DOUBLE PRECISION array, dimension (M) QQ (input/output) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION Machine epsilon. TOL2 (input) DOUBLE PRECISION Desired relative accuracy of computed eigenvalues as defined in DLASQ1. SMALL2 (input) DOUBLE PRECISION A threshold value as defined in DLASQ1. SUP (input/output) DOUBLE PRECISION 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.