1ZBDSQR(1)                LAPACK routine (version 3.1)                ZBDSQR(1)
2
3
4

NAME

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

SYNOPSIS

12       SUBROUTINE ZBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU,  C,
13                          LDC, RWORK, INFO )
14
15           CHARACTER      UPLO
16
17           INTEGER        INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
18
19           DOUBLE         PRECISION D( * ), E( * ), RWORK( * )
20
21           COMPLEX*16     C( LDC, * ), U( LDU, * ), VT( LDVT, * )
22

PURPOSE

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

ARGUMENTS

56       UPLO    (input) CHARACTER*1
57               = 'U':  B is upper bidiagonal;
58               = 'L':  B is lower bidiagonal.
59
60       N       (input) INTEGER
61               The order of the matrix B.  N >= 0.
62
63       NCVT    (input) INTEGER
64               The number of columns of the matrix VT. NCVT >= 0.
65
66       NRU     (input) INTEGER
67               The number of rows of the matrix U. NRU >= 0.
68
69       NCC     (input) INTEGER
70               The number of columns of the matrix C. NCC >= 0.
71
72       D       (input/output) DOUBLE PRECISION array, dimension (N)
73               On entry, the n diagonal elements of the bidiagonal  matrix  B.
74               On  exit,  if  INFO=0,  the  singular values of B in decreasing
75               order.
76
77       E       (input/output) DOUBLE PRECISION array, dimension (N-1)
78               On entry, the N-1 offdiagonal elements of the bidiagonal matrix
79               B.   On exit, if INFO = 0, E is destroyed; if INFO > 0, D and E
80               will contain the diagonal and superdiagonal elements of a bidi‐
81               agonal  matrix  orthogonally  equivalent  to  the  one given as
82               input.
83
84       VT      (input/output) COMPLEX*16 array, dimension (LDVT, NCVT)
85               On entry, an N-by-NCVT matrix VT.  On exit, VT  is  overwritten
86               by P**H * VT.  Not referenced if NCVT = 0.
87
88       LDVT    (input) INTEGER
89               The  leading  dimension  of  the array VT.  LDVT >= max(1,N) if
90               NCVT > 0; LDVT >= 1 if NCVT = 0.
91
92       U       (input/output) COMPLEX*16 array, dimension (LDU, N)
93               On entry, an NRU-by-N matrix U.  On exit, U is overwritten by U
94               * Q.  Not referenced if NRU = 0.
95
96       LDU     (input) INTEGER
97               The leading dimension of the array U.  LDU >= max(1,NRU).
98
99       C       (input/output) COMPLEX*16 array, dimension (LDC, NCC)
100               On  entry,  an N-by-NCC matrix C.  On exit, C is overwritten by
101               Q**H * C.  Not referenced if NCC = 0.
102
103       LDC     (input) INTEGER
104               The leading dimension of the array C.  LDC >= max(1,N) if NCC >
105               0; LDC >=1 if NCC = 0.
106
107       RWORK   (workspace) DOUBLE PRECISION array, dimension (2*N)
108               if NCVT = NRU = NCC = 0, (max(1, 4*N-4)) otherwise
109
110       INFO    (output) INTEGER
111               = 0:  successful exit
112               < 0:  If INFO = -i, the i-th argument had an illegal value
113               >  0:  the algorithm did not converge; D and E contain the ele‐
114               ments of a bidiagonal matrix which is orthogonally  similar  to
115               the input matrix B;  if INFO = i, i elements of E have not con‐
116               verged to zero.
117

PARAMETERS

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