1DGERQF(1) LAPACK routine (version 3.2) DGERQF(1)
2
3
4
6 DGERQF - computes an RQ factorization of a real M-by-N matrix A
7
9 SUBROUTINE DGERQF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
10
11 INTEGER INFO, LDA, LWORK, M, N
12
13 DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
14
16 DGERQF computes an RQ factorization of a real M-by-N matrix A: A = R *
17 Q.
18
20 M (input) INTEGER
21 The number of rows of the matrix A. M >= 0.
22
23 N (input) INTEGER
24 The number of columns of the matrix A. N >= 0.
25
26 A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
27 On entry, the M-by-N matrix A. On exit, if m <= n, the upper
28 triangle of the subarray A(1:m,n-m+1:n) contains the M-by-M
29 upper triangular matrix R; if m >= n, the elements on and above
30 the (m-n)-th subdiagonal contain the M-by-N upper trapezoidal
31 matrix R; the remaining elements, with the array TAU, represent
32 the orthogonal matrix Q as a product of min(m,n) elementary
33 reflectors (see Further Details). LDA (input) INTEGER The
34 leading dimension of the array A. LDA >= max(1,M).
35
36 TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
37 The scalar factors of the elementary reflectors (see Further
38 Details).
39
40 WORK (workspace/output) DOUBLE PRECISION array, dimension
41 (MAX(1,LWORK))
42 On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
43
44 LWORK (input) INTEGER
45 The dimension of the array WORK. LWORK >= max(1,M). For opti‐
46 mum performance LWORK >= M*NB, where NB is the optimal block‐
47 size. If LWORK = -1, then a workspace query is assumed; the
48 routine only calculates the optimal size of the WORK array,
49 returns this value as the first entry of the WORK array, and no
50 error message related to LWORK is issued by XERBLA.
51
52 INFO (output) INTEGER
53 = 0: successful exit
54 < 0: if INFO = -i, the i-th argument had an illegal value
55
57 The matrix Q is represented as a product of elementary reflectors
58 Q = H(1) H(2) . . . H(k), where k = min(m,n).
59 Each H(i) has the form
60 H(i) = I - tau * v * v'
61 where tau is a real scalar, and v is a real vector with
62 v(n-k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored on exit in
63 A(m-k+i,1:n-k+i-1), and tau in TAU(i).
64
65
66
67 LAPACK routine (version 3.2) November 2008 DGERQF(1)