1DGGRQF(1)                LAPACK routine (version 3.2)                DGGRQF(1)
2
3
4

NAME

6       DGGRQF  - computes a generalized RQ factorization of an M-by-N matrix A
7       and a P-by-N matrix B
8

SYNOPSIS

10       SUBROUTINE DGGRQF( M, P, N, A, LDA, TAUA, B, LDB,  TAUB,  WORK,  LWORK,
11                          INFO )
12
13           INTEGER        INFO, LDA, LDB, LWORK, M, N, P
14
15           DOUBLE         PRECISION A( LDA, * ), B( LDB, * ), TAUA( * ), TAUB(
16                          * ), WORK( * )
17

PURPOSE

19       DGGRQF computes a generalized RQ factorization of an  M-by-N  matrix  A
20       and a P-by-N matrix B:
21                   A = R*Q,        B = Z*T*Q,
22       where  Q  is  an  N-by-N  orthogonal  matrix,  Z is a P-by-P orthogonal
23       matrix, and R and T assume one of the forms:
24       if M <= N,  R = ( 0  R12 ) M,   or if M > N,  R = ( R11 ) M-N,
25                        N-M  M                           ( R21 ) N
26                                                            N
27       where R12 or R21 is upper triangular, and
28       if P >= N,  T = ( T11 ) N  ,   or if P < N,  T = ( T11  T12 ) P,
29                       (  0  ) P-N                         P   N-P
30                          N
31       where T11 is upper triangular.
32       In particular, if B is square and nonsingular, the GRQ factorization of
33       A and B implicitly gives the RQ factorization of A*inv(B):
34                    A*inv(B) = (R*inv(T))*Z'
35       where  inv(B)  denotes  the inverse of the matrix B, and Z' denotes the
36       transpose of the matrix Z.
37

ARGUMENTS

39       M       (input) INTEGER
40               The number of rows of the matrix A.  M >= 0.
41
42       P       (input) INTEGER
43               The number of rows of the matrix B.  P >= 0.
44
45       N       (input) INTEGER
46               The number of columns of the matrices A and B. N >= 0.
47
48       A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
49               On entry, the M-by-N matrix A.  On exit, if M <= N,  the  upper
50               triangle  of  the  subarray  A(1:M,N-M+1:N) contains the M-by-M
51               upper triangular matrix R; if M > N, the elements on and  above
52               the  (M-N)-th  subdiagonal contain the M-by-N upper trapezoidal
53               matrix R; the remaining elements, with the array  TAUA,  repre‐
54               sent the orthogonal matrix Q as a product of elementary reflec‐
55               tors (see Further Details).
56
57       LDA     (input) INTEGER
58               The leading dimension of the array A. LDA >= max(1,M).
59
60       TAUA    (output) DOUBLE PRECISION array, dimension (min(M,N))
61               The scalar factors of the elementary reflectors which represent
62               the   orthogonal   matrix   Q   (see   Further   Details).    B
63               (input/output) DOUBLE PRECISION  array,  dimension  (LDB,N)  On
64               entry, the P-by-N matrix B.  On exit, the elements on and above
65               the diagonal of  the  array  contain  the  min(P,N)-by-N  upper
66               trapezoidal  matrix  T  (T  is upper triangular if P >= N); the
67               elements below the diagonal, with the array TAUB, represent the
68               orthogonal  matrix Z as a product of elementary reflectors (see
69               Further Details).  LDB     (input) INTEGER The  leading  dimen‐
70               sion of the array B. LDB >= max(1,P).
71
72       TAUB    (output) DOUBLE PRECISION array, dimension (min(P,N))
73               The scalar factors of the elementary reflectors which represent
74               the  orthogonal  matrix  Z   (see   Further   Details).    WORK
75               (workspace/output)    DOUBLE    PRECISION    array,   dimension
76               (MAX(1,LWORK)) On exit, if INFO = 0, WORK(1) returns the  opti‐
77               mal LWORK.
78
79       LWORK   (input) INTEGER
80               The  dimension  of  the array WORK. LWORK >= max(1,N,M,P).  For
81               optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), where
82               NB1  is the optimal blocksize for the RQ factorization of an M-
83               by-N matrix, NB2 is the optimal blocksize for the QR factoriza‐
84               tion of a P-by-N matrix, and NB3 is the optimal blocksize for a
85               call of DORMRQ.  If LWORK =  -1,  then  a  workspace  query  is
86               assumed;  the  routine  only calculates the optimal size of the
87               WORK array, returns this value as the first entry of  the  WORK
88               array,  and  no  error  message  related  to LWORK is issued by
89               XERBLA.
90
91       INFO    (output) INTEGER
92               = 0:  successful exit
93               < 0:  if INF0= -i, the i-th argument had an illegal value.
94

FURTHER DETAILS

96       The matrix Q is represented as a product of elementary reflectors
97          Q = H(1) H(2) . . . H(k), where k = min(m,n).
98       Each H(i) has the form
99          H(i) = I - taua * v * v'
100       where taua is a real scalar, and v is a real vector with
101       v(n-k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored  on  exit  in
102       A(m-k+i,1:n-k+i-1), and taua in TAUA(i).
103       To form Q explicitly, use LAPACK subroutine DORGRQ.
104       To  use  Q to update another matrix, use LAPACK subroutine DORMRQ.  The
105       matrix Z is represented as a product of elementary reflectors
106          Z = H(1) H(2) . . . H(k), where k = min(p,n).
107       Each H(i) has the form
108          H(i) = I - taub * v * v'
109       where taub is a real scalar, and v is a real vector with
110       v(1:i-1) = 0 and v(i) = 1; v(i+1:p) is stored on  exit  in  B(i+1:p,i),
111       and taub in TAUB(i).
112       To form Z explicitly, use LAPACK subroutine DORGQR.
113       To use Z to update another matrix, use LAPACK subroutine DORMQR.
114
115
116
117 LAPACK routine (version 3.2)    November 2008                       DGGRQF(1)
Impressum