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