SUBROUTINE DLASQ1( N, D, E, WORK, INFO ) INTEGER INFO, N DOUBLE PRECISION D( * ), E( * ), WORK( * )
DLASQ1 computes the singular values of a real N-by-N bidiagonal matrix with diagonal D and off-diagonal E. The singular values are computed to high relative accuracy, barring over/underflow or denormalization. The algorithm is described in "Accurate singular values and differential qd algorithms," by K. V. Fernando and B. N. Parlett, Numer. Math., Vol-67, No. 2, pp. 191-230,1994. See also "Implementation of differential qd algorithms," by K. V. Fernando and B. N. Parlett, Technical Report, Department of Mathematics, University of California at Berkeley, 1994 (Under preparation).
N (input) INTEGER The number of rows and columns in the matrix. N >= 0. D (input/output) DOUBLE PRECISION array, dimension (N) On entry, D contains the diagonal elements of the bidiagonal matrix whose SVD is desired. On normal exit, D contains the singular values in decreasing order. E (input/output) DOUBLE PRECISION array, dimension (N) On entry, elements E(1:N-1) contain the off-diagonal elements of the bidiagonal matrix whose SVD is desired. On exit, E is overwritten. WORK (workspace) DOUBLE PRECISION array, dimension (2*N) 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.