1SLASDA(1) LAPACK auxiliary routine (version 3.1) SLASDA(1)
2
3
4
6 SLASDA - divide and conquer approach, SLASDA 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
11 SUBROUTINE SLASDA( 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 REAL C( * ), D( * ), DIFL( LDU, * ), DIFR( LDU, * ), E( *
21 ), GIVNUM( LDU, * ), POLES( LDU, * ), S( * ), U(
22 LDU, * ), VT( LDU, * ), WORK( * ), Z( LDU, * )
23
25 Using a divide and conquer approach, SLASDA 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, SLASD0, computes the singular values and the sin‐
32 gular vectors in explicit form.
33
34
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) REAL 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) REAL array, dimension ( M-1 )
58 Contains the subdiagonal entries of the bidiagonal matrix. On
59 exit, E has been destroyed.
60
61 U (output) REAL 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) REAL 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, dimension ( N )
76 if ICOMPQ = 1 and dimension 1 if ICOMPQ = 0. If ICOMPQ = 1, on
77 exit, K(I) is the dimension of the I-th secular equation on the
78 computation tree.
79
80 DIFL (output) REAL array, dimension ( LDU, NLVL ),
81 where NLVL = floor(log_2 (N/SMLSIZ))).
82
83 DIFR (output) REAL 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 SLASD8 for details.
90
91 Z (output) REAL 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) REAL 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, dimension ( LDGCOL, NLVL )
118 if ICOMPQ = 1, and not referenced if ICOMPQ = 0. If ICOMPQ = 1,
119 on exit, PERM(1, I) records permutations done on the I-th level
120 of the computation tree.
121
122 GIVNUM (output) REAL array, dimension ( LDU, 2 * NLVL ) if
123 ICOMPQ = 1, and not referenced if ICOMPQ = 0. If ICOMPQ = 1, on
124 exit, for each I, GIVNUM(1, 2 *I - 1) and GIVNUM(1, 2 *I) record
125 the C- and S- values of Givens rotations performed on the I-th
126 level on the computation tree.
127
128 C (output) REAL 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) REAL 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) REAL array, dimension
141 (6 * N + (SMLSIZ + 1)*(SMLSIZ + 1)).
142
143 IWORK (workspace) INTEGER array, dimension (7*N).
144
145 INFO (output) INTEGER
146 = 0: successful exit.
147 < 0: if INFO = -i, the i-th argument had an illegal value.
148 > 0: if INFO = 1, an singular value did not converge
149
151 Based on contributions by
152 Ming Gu and Huan Ren, Computer Science Division, University of
153 California at Berkeley, USA
154
155
156
157
158 LAPACK auxiliary routine (versionNo3v.e1m)ber 2006 SLASDA(1)