1SLASDQ(1) LAPACK auxiliary routine (version 3.1) SLASDQ(1)
2
3
4
6 SLASDQ - the singular value decomposition (SVD) of a real (upper or
7 lower) bidiagonal matrix with diagonal D and offdiagonal E, accumulat‐
8 ing the transformations if desired
9
11 SUBROUTINE SLASDQ( UPLO, SQRE, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,
12 LDU, C, LDC, WORK, INFO )
13
14 CHARACTER UPLO
15
16 INTEGER INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU, SQRE
17
18 REAL C( LDC, * ), D( * ), E( * ), U( LDU, * ), VT( LDVT,
19 * ), WORK( * )
20
22 SLASDQ computes the singular value decomposition (SVD) of a real (upper
23 or lower) bidiagonal matrix with diagonal D and offdiagonal E, accumu‐
24 lating the transformations if desired. Letting B denote the input bidi‐
25 agonal matrix, the algorithm computes orthogonal matrices Q and P such
26 that B = Q * S * P' (P' denotes the transpose of P). The singular val‐
27 ues S are overwritten on D.
28
29 The input matrix U is changed to U * Q if desired.
30 The input matrix VT is changed to P' * VT if desired.
31 The input matrix C is changed to Q' * C if desired.
32
33 See "Computing Small Singular Values of Bidiagonal Matrices With Guar‐
34 anteed High Relative Accuracy," by J. Demmel and W. Kahan, LAPACK Work‐
35 ing Note #3, for a detailed description of the algorithm.
36
37
39 UPLO (input) CHARACTER*1
40 On entry, UPLO specifies whether the input bidiagonal matrix is
41 upper or lower bidiagonal, and wether it is square are not. UPLO
42 = 'U' or 'u' B is upper bidiagonal. UPLO = 'L' or 'l' B is
43 lower bidiagonal.
44
45 SQRE (input) INTEGER
46 = 0: then the input matrix is N-by-N.
47 = 1: then the input matrix is N-by-(N+1) if UPLU = 'U' and
48 (N+1)-by-N if UPLU = 'L'.
49
50 The bidiagonal matrix has N = NL + NR + 1 rows and M = N + SQRE
51 >= N columns.
52
53 N (input) INTEGER
54 On entry, N specifies the number of rows and columns in the
55 matrix. N must be at least 0.
56
57 NCVT (input) INTEGER
58 On entry, NCVT specifies the number of columns of the matrix VT.
59 NCVT must be at least 0.
60
61 NRU (input) INTEGER
62 On entry, NRU specifies the number of rows of the matrix U. NRU
63 must be at least 0.
64
65 NCC (input) INTEGER
66 On entry, NCC specifies the number of columns of the matrix C.
67 NCC must be at least 0.
68
69 D (input/output) REAL array, dimension (N)
70 On entry, D contains the diagonal entries of the bidiagonal
71 matrix whose SVD is desired. On normal exit, D contains the sin‐
72 gular values in ascending order.
73
74 E (input/output) REAL array.
75 dimension is (N-1) if SQRE = 0 and N if SQRE = 1. On entry, the
76 entries of E contain the offdiagonal entries of the bidiagonal
77 matrix whose SVD is desired. On normal exit, E will contain 0. If
78 the algorithm does not converge, D and E will contain the diago‐
79 nal and superdiagonal entries of a bidiagonal matrix orthogonally
80 equivalent to the one given as input.
81
82 VT (input/output) REAL array, dimension (LDVT, NCVT)
83 On entry, contains a matrix which on exit has been premultiplied
84 by P', dimension N-by-NCVT if SQRE = 0 and (N+1)-by-NCVT if SQRE
85 = 1 (not referenced if NCVT=0).
86
87 LDVT (input) INTEGER
88 On entry, LDVT specifies the leading dimension of VT as declared
89 in the calling (sub) program. LDVT must be at least 1. If NCVT is
90 nonzero LDVT must also be at least N.
91
92 U (input/output) REAL array, dimension (LDU, N)
93 On entry, contains a matrix which on exit has been postmulti‐
94 plied by Q, dimension NRU-by-N if SQRE = 0 and NRU-by-(N+1) if
95 SQRE = 1 (not referenced if NRU=0).
96
97 LDU (input) INTEGER
98 On entry, LDU specifies the leading dimension of U as declared
99 in the calling (sub) program. LDU must be at least max( 1, NRU )
100 .
101
102 C (input/output) REAL array, dimension (LDC, NCC)
103 On entry, contains an N-by-NCC matrix which on exit has been pre‐
104 multiplied by Q' dimension N-by-NCC if SQRE = 0 and (N+1)-by-NCC
105 if SQRE = 1 (not referenced if NCC=0).
106
107 LDC (input) INTEGER
108 On entry, LDC specifies the leading dimension of C as declared
109 in the calling (sub) program. LDC must be at least 1. If NCC is
110 nonzero, LDC must also be at least N.
111
112 WORK (workspace) REAL array, dimension (4*N)
113 Workspace. Only referenced if one of NCVT, NRU, or NCC is
114 nonzero, and if N is at least 2.
115
116 INFO (output) INTEGER
117 On exit, a value of 0 indicates a successful exit. If INFO < 0,
118 argument number -INFO is illegal. If INFO > 0, the algorithm did
119 not converge, and INFO specifies how many superdiagonals did not
120 converge.
121
123 Based on contributions by
124 Ming Gu and Huan Ren, Computer Science Division, University of
125 California at Berkeley, USA
126
127
128
129
130 LAPACK auxiliary routine (versionNo3v.e1m)ber 2006 SLASDQ(1)