SLASQ1 - compute the singular values of a real N-by-N
bidiagonal matrix with diagonal D and off-diagonal E
SYNOPSIS
SUBROUTINE SLASQ1( N, D, E, WORK, INFO )
INTEGER INFO, N
REAL D( * ), E( * ), WORK( * )
PURPOSE
SLASQ1 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) REAL 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) REAL 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) REAL 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