1SBDSQR(1)                LAPACK routine (version 3.2)                SBDSQR(1)
2
3
4

NAME

6       SBDSQR - computes the singular values and, optionally, the right and/or
7       left singular vectors from the singular value decomposition (SVD) of  a
8       real  N-by-N  (upper  or  lower) bidiagonal matrix B using the implicit
9       zero-shift QR algorithm
10

SYNOPSIS

12       SUBROUTINE SBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU,  C,
13                          LDC, WORK, INFO )
14
15           CHARACTER      UPLO
16
17           INTEGER        INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
18
19           REAL           C(  LDC, * ), D( * ), E( * ), U( LDU, * ), VT( LDVT,
20                          * ), WORK( * )
21

PURPOSE

23       SBDSQR computes the singular values and, optionally, the  right  and/or
24       left  singular vectors from the singular value decomposition (SVD) of a
25       real N-by-N (upper or lower) bidiagonal matrix  B  using  the  implicit
26       zero-shift QR algorithm.  The SVD of B has the form
27          B = Q * S * P**T
28       where  S  is the diagonal matrix of singular values, Q is an orthogonal
29       matrix of left singular vectors, and P is an orthogonal matrix of right
30       singular vectors.  If left singular vectors are requested, this subrou‐
31       tine actually returns U*Q instead of Q, and, if right singular  vectors
32       are  requested,  this  subroutine  returns P**T*VT instead of P**T, for
33       given real input matrices U and VT.  When U and VT are  the  orthogonal
34       matrices  that  reduce  a  general  matrix  A  to bidiagonal form:  A =
35       U*B*VT, as computed by SGEBRD, then
36          A = (U*Q) * S * (P**T*VT)
37       is the SVD of A.  Optionally, the subroutine may  also  compute  Q**T*C
38       for a given real input matrix C.
39       See "Computing  Small Singular Values of Bidiagonal Matrices With Guar‐
40       anteed High Relative Accuracy," by J. Demmel and W. Kahan, LAPACK Work‐
41       ing  Note  #3  (or  SIAM  J.  Sci. Statist. Comput. vol. 11, no. 5, pp.
42       873-912, Sept 1990) and
43       "Accurate singular values and differential qd algorithms," by  B.  Par‐
44       lett  and  V.  Fernando, Technical Report CPAM-554, Mathematics Depart‐
45       ment, University of California at Berkeley, July 1992  for  a  detailed
46       description of the algorithm.
47

ARGUMENTS

49       UPLO    (input) CHARACTER*1
50               = 'U':  B is upper bidiagonal;
51               = 'L':  B is lower bidiagonal.
52
53       N       (input) INTEGER
54               The order of the matrix B.  N >= 0.
55
56       NCVT    (input) INTEGER
57               The number of columns of the matrix VT. NCVT >= 0.
58
59       NRU     (input) INTEGER
60               The number of rows of the matrix U. NRU >= 0.
61
62       NCC     (input) INTEGER
63               The number of columns of the matrix C. NCC >= 0.
64
65       D       (input/output) REAL array, dimension (N)
66               On  entry,  the n diagonal elements of the bidiagonal matrix B.
67               On exit, if INFO=0, the singular  values  of  B  in  decreasing
68               order.
69
70       E       (input/output) REAL array, dimension (N-1)
71               On entry, the N-1 offdiagonal elements of the bidiagonal matrix
72               B.  On exit, if INFO = 0, E is destroyed; if INFO > 0, D and  E
73               will contain the diagonal and superdiagonal elements of a bidi‐
74               agonal matrix orthogonally  equivalent  to  the  one  given  as
75               input.
76
77       VT      (input/output) REAL array, dimension (LDVT, NCVT)
78               On  entry,  an N-by-NCVT matrix VT.  On exit, VT is overwritten
79               by P**T * VT.  Not referenced if NCVT = 0.
80
81       LDVT    (input) INTEGER
82               The leading dimension of the array VT.   LDVT  >=  max(1,N)  if
83               NCVT > 0; LDVT >= 1 if NCVT = 0.
84
85       U       (input/output) REAL array, dimension (LDU, N)
86               On entry, an NRU-by-N matrix U.  On exit, U is overwritten by U
87               * Q.  Not referenced if NRU = 0.
88
89       LDU     (input) INTEGER
90               The leading dimension of the array U.  LDU >= max(1,NRU).
91
92       C       (input/output) REAL array, dimension (LDC, NCC)
93               On entry, an N-by-NCC matrix C.  On exit, C is  overwritten  by
94               Q**T * C.  Not referenced if NCC = 0.
95
96       LDC     (input) INTEGER
97               The leading dimension of the array C.  LDC >= max(1,N) if NCC >
98               0; LDC >=1 if NCC = 0.
99
100       WORK    (workspace) REAL array, dimension (4*N)
101
102       INFO    (output) INTEGER
103               = 0:  successful exit
104               < 0:  If INFO = -i, the i-th argument had an illegal value
105               > 0: if NCVT = NRU = NCC = 0, = 1, a split was marked by a pos‐
106               itive value in E = 2, current block of Z not diagonalized after
107               30*N iterations (in inner while loop) = 3,  termination  crite‐
108               rion  of  outer while loop not met (program created more than N
109               unreduced blocks) else NCVT = NRU = NCC = 0, the algorithm  did
110               not  converge;  D  and  E  contain the elements of a bidiagonal
111               matrix which is orthogonally similar to the input matrix B;  if
112               INFO = i, i elements of E have not converged to zero.
113

PARAMETERS

115       TOLMUL  REAL, default = max(10,min(100,EPS**(-1/8)))
116               TOLMUL  controls  the convergence criterion of the QR loop.  If
117               it is positive, TOLMUL*EPS is the desired relative precision in
118               the  computed  singular  values.   If  it is negative, abs(TOL‐
119               MUL*EPS*sigma_max) is the desired absolute accuracy in the com‐
120               puted   singular   values  (corresponds  to  relative  accuracy
121               abs(TOLMUL*EPS) in the  largest  singular  value.   abs(TOLMUL)
122               should  be  between 1 and 1/EPS, and preferably between 10 (for
123               fast convergence) and .1/EPS (for there to be some accuracy  in
124               the  results).  Default is to lose at either one eighth or 2 of
125               the available decimal digits in each  computed  singular  value
126               (whichever is smaller).
127
128       MAXITR  INTEGER, default = 6
129               MAXITR  controls  the maximum number of passes of the algorithm
130               through its inner loop. The algorithms stops (and so  fails  to
131               converge)  if  the  number  of  passes  through  the inner loop
132               exceeds MAXITR*N**2.
133
134
135
136 LAPACK routine (version 3.2)    November 2008                       SBDSQR(1)
Impressum