1DLASDA(1)           LAPACK auxiliary routine (version 3.1)           DLASDA(1)
2
3
4

NAME

6       DLASDA  -  divide  and  conquer  approach, DLASDA computes the singular
7       value decomposition (SVD) of a real upper bidiagonal  N-by-M  matrix  B
8       with diagonal D and offdiagonal E, where M = N + SQRE
9

SYNOPSIS

11       SUBROUTINE DLASDA( ICOMPQ,  SMLSIZ, N, SQRE, D, E, U, LDU, VT, K, DIFL,
12                          DIFR,  Z,  POLES,  GIVPTR,  GIVCOL,  LDGCOL,   PERM,
13                          GIVNUM, C, S, WORK, IWORK, INFO )
14
15           INTEGER        ICOMPQ, INFO, LDGCOL, LDU, N, SMLSIZ, SQRE
16
17           INTEGER        GIVCOL(  LDGCOL,  * ), GIVPTR( * ), IWORK( * ), K( *
18                          ), PERM( LDGCOL, * )
19
20           DOUBLE         PRECISION C( * ), D( * ), DIFL( LDU, * ), DIFR( LDU,
21                          * ), E( * ), GIVNUM( LDU, * ), POLES( LDU, * ), S( *
22                          ), U( LDU, * ), VT( LDU, * ), WORK( * ), Z( LDU, * )
23

PURPOSE

25       Using a divide and conquer approach, DLASDA computes the singular value
26       decomposition  (SVD)  of  a  real upper bidiagonal N-by-M matrix B with
27       diagonal D and offdiagonal E, where M = N + SQRE.  The  algorithm  com‐
28       putes  the  singular  values in the SVD B = U * S * VT.  The orthogonal
29       matrices U and VT are optionally computed in compact form.
30
31       A related subroutine, DLASD0, computes the singular values and the sin‐
32       gular vectors in explicit form.
33
34

ARGUMENTS

36       ICOMPQ  (input)  INTEGER  Specifies  whether singular vectors are to be
37       computed in compact form, as follows = 0: Compute singular values only.
38       = 1: Compute singular vectors of upper  bidiagonal  matrix  in  compact
39       form.
40
41       SMLSIZ  (input) INTEGER The maximum size of the subproblems at the bot‐
42       tom of the computation tree.
43
44       N      (input) INTEGER
45              The row dimension of the upper bidiagonal matrix. This  is  also
46              the dimension of the main diagonal array D.
47
48       SQRE   (input) INTEGER
49              Specifies  the  column dimension of the bidiagonal matrix.  = 0:
50              The bidiagonal matrix has column dimension M = N;
51              = 1: The bidiagonal matrix has column dimension M = N + 1.
52
53       D      (input/output) DOUBLE PRECISION array, dimension ( N )
54              On entry D contains the main diagonal of the bidiagonal  matrix.
55              On exit D, if INFO = 0, contains its singular values.
56
57       E      (input) DOUBLE PRECISION array, dimension ( M-1 )
58              Contains  the  subdiagonal entries of the bidiagonal matrix.  On
59              exit, E has been destroyed.
60
61       U      (output) DOUBLE PRECISION array,
62              dimension ( LDU, SMLSIZ ) if ICOMPQ = 1, and not  referenced  if
63              ICOMPQ = 0. If ICOMPQ = 1, on exit, U contains the left singular
64              vector matrices of all subproblems at the bottom level.
65
66       LDU    (input) INTEGER, LDU = > N.
67              The leading dimension  of  arrays  U,  VT,  DIFL,  DIFR,  POLES,
68              GIVNUM, and Z.
69
70       VT     (output) DOUBLE PRECISION array,
71              dimension ( LDU, SMLSIZ+1 ) if ICOMPQ = 1, and not referenced if
72              ICOMPQ = 0. If ICOMPQ = 1, on exit, VT' contains the right  sin‐
73              gular vector matrices of all subproblems at the bottom level.
74
75       K      (output) INTEGER array,
76              dimension ( N ) if ICOMPQ = 1 and dimension 1 if ICOMPQ = 0.  If
77              ICOMPQ = 1, on exit, K(I) is the dimension of the  I-th  secular
78              equation on the computation tree.
79
80       DIFL   (output) DOUBLE PRECISION array, dimension ( LDU, NLVL ),
81              where NLVL = floor(log_2 (N/SMLSIZ))).
82
83       DIFR   (output) DOUBLE PRECISION array,
84              dimension ( LDU, 2 * NLVL ) if ICOMPQ = 1 and dimension ( N ) if
85              ICOMPQ = 0.  If ICOMPQ = 1, on exit, DIFL(1:N, I) and  DIFR(1:N,
86              2  * I - 1) record distances between singular values on the I-th
87              level and singular values on the (I -1)-th level, and  DIFR(1:N,
88              2  * I ) contains the normalizing factors for the right singular
89              vector matrix. See DLASD8 for details.
90
91       Z      (output) DOUBLE PRECISION array,
92              dimension ( LDU, NLVL ) if ICOMPQ = 1 and dimension  (  N  )  if
93              ICOMPQ  = 0.  The first K elements of Z(1, I) contain the compo‐
94              nents of the deflation-adjusted updating row vector for subprob‐
95              lems on the I-th level.
96
97       POLES  (output) DOUBLE PRECISION array,
98              dimension ( LDU, 2 * NLVL ) if ICOMPQ = 1, and not referenced if
99              ICOMPQ = 0. If ICOMPQ = 1,  on  exit,  POLES(1,  2*I  -  1)  and
100              POLES(1,  2*I) contain  the new and old singular values involved
101              in the secular equations on the I-th level.
102
103              GIVPTR (output) INTEGER array, dimension ( N ) if  ICOMPQ  =  1,
104              and  not  referenced  if  ICOMPQ  =  0.  If ICOMPQ = 1, on exit,
105              GIVPTR( I ) records the number of Givens rotations performed  on
106              the I-th problem on the computation tree.
107
108              GIVCOL (output) INTEGER array, dimension ( LDGCOL, 2 * NLVL ) if
109              ICOMPQ = 1, and not referenced if ICOMPQ = 0. If ICOMPQ = 1,  on
110              exit, for each I, GIVCOL(1, 2 *I - 1) and GIVCOL(1, 2 *I) record
111              the locations of Givens rotations performed on the I-th level on
112              the computation tree.
113
114              LDGCOL  (input) INTEGER, LDGCOL = > N.  The leading dimension of
115              arrays GIVCOL and PERM.
116
117       PERM   (output) INTEGER array,
118              dimension ( LDGCOL, NLVL ) if ICOMPQ = 1, and not referenced  if
119              ICOMPQ  = 0. If ICOMPQ = 1, on exit, PERM(1, I) records permuta‐
120              tions done on the I-th level of the computation tree.
121
122              GIVNUM (output) DOUBLE PRECISION array, dimension (  LDU,   2  *
123              NLVL  )  if  ICOMPQ  =  1,  and not referenced if ICOMPQ = 0. If
124              ICOMPQ = 1, on exit, for  each  I,  GIVNUM(1,  2  *I  -  1)  and
125              GIVNUM(1,  2 *I) record the C- and S- values of Givens rotations
126              performed on the I-th level on the computation tree.
127
128       C      (output) DOUBLE PRECISION array,
129              dimension ( N ) if ICOMPQ = 1, and dimension 1 if  ICOMPQ  =  0.
130              If ICOMPQ = 1 and the I-th subproblem is not square, on exit, C(
131              I ) contains the C-value of a Givens  rotation  related  to  the
132              right null space of the I-th subproblem.
133
134       S      (output) DOUBLE PRECISION array, dimension ( N ) if
135              ICOMPQ = 1, and dimension 1 if ICOMPQ = 0. If ICOMPQ = 1 and the
136              I-th subproblem is not square, on exit, S( I ) contains  the  S-
137              value  of  a  Givens rotation related to the right null space of
138              the I-th subproblem.
139
140       WORK   (workspace) DOUBLE PRECISION array, dimension
141              (6 * N + (SMLSIZ + 1)*(SMLSIZ + 1)).
142
143       IWORK  (workspace) INTEGER array.
144              Dimension must be at least (7 * N).
145
146       INFO   (output) INTEGER
147              = 0:  successful exit.
148              < 0:  if INFO = -i, the i-th argument had an illegal value.
149              > 0:  if INFO = 1, an singular value did not converge
150

FURTHER DETAILS

152       Based on contributions by
153          Ming Gu and Huan Ren, Computer Science Division, University of
154          California at Berkeley, USA
155
156
157
158
159 LAPACK auxiliary routine (versionNo3v.e1m)ber 2006                       DLASDA(1)
Impressum