LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine slasq1 | ( | integer | n, |
real, dimension( * ) | d, | ||
real, dimension( * ) | e, | ||
real, dimension( * ) | work, | ||
integer | info ) |
SLASQ1 computes the singular values of a real square bidiagonal matrix. Used by sbdsqr.
Download SLASQ1 + dependencies [TGZ] [ZIP] [TXT]
!> !> SLASQ1 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, in the absence of !> denormalization, underflow and overflow. The algorithm was first !> presented in !> !> 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 , LAPACK Working Note. !>
[in] | N | !> N is INTEGER !> The number of rows and columns in the matrix. N >= 0. !> |
[in,out] | D | !> D is 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. !> |
[in,out] | E | !> E is 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. !> |
[out] | WORK | !> WORK is REAL array, dimension (4*N) !> |
[out] | INFO | !> INFO is 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 100*N !> iterations (in inner while loop) On exit D and E !> represent a matrix with the same singular values !> which the calling subroutine could use to finish the !> computation, or even feed back into SLASQ1 !> = 3, termination criterion of outer while loop not met !> (program created more than N unreduced blocks) !> |
Definition at line 105 of file slasq1.f.