1DGESVD(1)             LAPACK driver routine (version 3.1)            DGESVD(1)
2
3
4

NAME

6       DGESVD - the singular value decomposition (SVD) of a real M-by-N matrix
7       A, optionally computing the left and/or right singular vectors
8

SYNOPSIS

10       SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA,  S,  U,  LDU,  VT,  LDVT,
11                          WORK, LWORK, INFO )
12
13           CHARACTER      JOBU, JOBVT
14
15           INTEGER        INFO, LDA, LDU, LDVT, LWORK, M, N
16
17           DOUBLE         PRECISION  A(  LDA,  *  ),  S( * ), U( LDU, * ), VT(
18                          LDVT, * ), WORK( * )
19

PURPOSE

21       DGESVD computes the singular value decomposition (SVD) of a real M-by-N
22       matrix  A, optionally computing the left and/or right singular vectors.
23       The SVD is written
24
25            A = U * SIGMA * transpose(V)
26
27       where SIGMA is an M-by-N matrix which is zero except for  its  min(m,n)
28       diagonal elements, U is an M-by-M orthogonal matrix, and V is an N-by-N
29       orthogonal matrix.  The diagonal elements of  SIGMA  are  the  singular
30       values  of  A;  they  are  real  and  non-negative, and are returned in
31       descending order.  The first min(m,n) columns of U and V are  the  left
32       and right singular vectors of A.
33
34       Note that the routine returns V**T, not V.
35
36

ARGUMENTS

38       JOBU    (input) CHARACTER*1
39               Specifies options for computing all or part of the matrix U:
40               = 'A':  all M columns of U are returned in array U:
41               = 'S':  the first min(m,n) columns of U (the left singular vec‐
42               tors) are returned in the array U; = 'O':  the  first  min(m,n)
43               columns of U (the left singular vectors) are overwritten on the
44               array A; = 'N':  no columns of U (no left singular vectors) are
45               computed.
46
47       JOBVT   (input) CHARACTER*1
48               Specifies options for computing all or part of the matrix V**T:
49               = 'A':  all N rows of V**T are returned in the array VT;
50               =  'S':   the  first  min(m,n) rows of V**T (the right singular
51               vectors) are returned in  the  array  VT;  =  'O':   the  first
52               min(m,n)  rows  of  V**T (the right singular vectors) are over‐
53               written on the array A; = 'N':  no rows of V**T (no right  sin‐
54               gular vectors) are computed.
55
56               JOBVT and JOBU cannot both be 'O'.
57
58       M       (input) INTEGER
59               The number of rows of the input matrix A.  M >= 0.
60
61       N       (input) INTEGER
62               The number of columns of the input matrix A.  N >= 0.
63
64       A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
65               On  entry,  the M-by-N matrix A.  On exit, if JOBU = 'O',  A is
66               overwritten with the first min(m,n) columns of U (the left sin‐
67               gular  vectors,  stored columnwise); if JOBVT = 'O', A is over‐
68               written with the first min(m,n) rows of V**T (the right  singu‐
69               lar  vectors,  stored rowwise); if JOBU .ne. 'O' and JOBVT .ne.
70               'O', the contents of A are destroyed.
71
72       LDA     (input) INTEGER
73               The leading dimension of the array A.  LDA >= max(1,M).
74
75       S       (output) DOUBLE PRECISION array, dimension (min(M,N))
76               The singular values of A, sorted so that S(i) >= S(i+1).
77
78       U       (output) DOUBLE PRECISION array, dimension (LDU,UCOL)
79               (LDU,M) if JOBU = 'A' or (LDU,min(M,N)) if JOBU = 'S'.  If JOBU
80               =  'A',  U  contains  the M-by-M orthogonal matrix U; if JOBU =
81               'S', U contains the first min(m,n) columns of U (the left  sin‐
82               gular  vectors,  stored columnwise); if JOBU = 'N' or 'O', U is
83               not referenced.
84
85       LDU     (input) INTEGER
86               The leading dimension of the array U.  LDU >= 1; if JOBU =  'S'
87               or 'A', LDU >= M.
88
89       VT      (output) DOUBLE PRECISION array, dimension (LDVT,N)
90               If  JOBVT = 'A', VT contains the N-by-N orthogonal matrix V**T;
91               if JOBVT = 'S', VT contains the first  min(m,n)  rows  of  V**T
92               (the right singular vectors, stored rowwise); if JOBVT = 'N' or
93               'O', VT is not referenced.
94
95       LDVT    (input) INTEGER
96               The leading dimension of the array VT.  LDVT >= 1; if  JOBVT  =
97               'A', LDVT >= N; if JOBVT = 'S', LDVT >= min(M,N).
98
99       WORK       (workspace/output)   DOUBLE   PRECISION   array,   dimension
100       (MAX(1,LWORK))
101               On exit, if INFO = 0, WORK(1) returns  the  optimal  LWORK;  if
102               INFO > 0, WORK(2:MIN(M,N)) contains the unconverged superdiago‐
103               nal elements of an upper bidiagonal matrix B whose diagonal  is
104               in  S  (not necessarily sorted). B satisfies A = U * B * VT, so
105               it has the same singular values  as  A,  and  singular  vectors
106               related by U and VT.
107
108       LWORK   (input) INTEGER
109               The    dimension    of    the    array    WORK.     LWORK    >=
110               MAX(1,3*MIN(M,N)+MAX(M,N),5*MIN(M,N)).  For  good  performance,
111               LWORK should generally be larger.
112
113               If  LWORK  = -1, then a workspace query is assumed; the routine
114               only calculates the optimal size of  the  WORK  array,  returns
115               this  value  as the first entry of the WORK array, and no error
116               message related to LWORK is issued by XERBLA.
117
118       INFO    (output) INTEGER
119               = 0:  successful exit.
120               < 0:  if INFO = -i, the i-th argument had an illegal value.
121               > 0:  if DBDSQR did  not  converge,  INFO  specifies  how  many
122               superdiagonals  of  an  intermediate  bidiagonal form B did not
123               converge to  zero.  See  the  description  of  WORK  above  for
124               details.
125
126
127
128 LAPACK driver routine (version 3.N1o)vember 2006                       DGESVD(1)
Impressum