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

NAME

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

SYNOPSIS

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

PURPOSE

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

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) 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

FURTHER DETAILS

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)
Impressum