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