DLASQ1 - compute the singular values of a real N-by-N
bidiagonal matrix with diagonal D and off-diagonal E
SYNOPSIS
SUBROUTINE DLASQ1( N, D, E, WORK, INFO )
INTEGER INFO, N
DOUBLE PRECISION D( * ), E( * ), WORK( * )
PURPOSE
DLASQ1 computes the singular values of a real N-by-N bidi
agonal matrix with diagonal D and off-diagonal E. The sin
gular values are computed to high relative accuracy, in
the absence of denormalization, underflow and overflow.
The algorithm was first presented 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,
and the present implementation is described in "An imple
mentation of the dqds Algorithm (Positive Case)", LAPACK
Working Note.
ARGUMENTS
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 (4*N)
INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value
> 0: the algorithm failed = 1, a split was marked by
a positive value in E = 2, current block of Z not
diagonalized after 30*N iterations (in inner while
loop) = 3, termination criterion of outer while loop
not met (program created more than N unreduced
Man(1) output converted with
man2html