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