1SLASDQ(1)           LAPACK auxiliary routine (version 3.2)           SLASDQ(1)
2
3
4

NAME

6       SLASDQ  -  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

SYNOPSIS

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

PURPOSE

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

ARGUMENTS

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

FURTHER DETAILS

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                       SLASDQ(1)
Impressum