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

NAME

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

SYNOPSIS

10       SUBROUTINE DGGQRF( N, M, P, 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       DGGQRF computes a generalized QR factorization of an  N-by-M  matrix  A
20       and an N-by-P matrix B:
21                   A = Q*R,        B = Q*T*Z,
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 N >= M,  R = ( R11 ) M  ,   or if N < M,  R = ( R11  R12 ) N,
25                       (  0  ) N-M                         N   M-N
26                          M
27       where R11 is upper triangular, and
28       if N <= P,  T = ( 0  T12 ) N,   or if N > P,  T = ( T11 ) N-P,
29                        P-N  N                           ( T21 ) P
30                                                            P
31       where T12 or T21 is upper triangular.
32       In particular, if B is square and nonsingular, the GQR factorization of
33       A and B implicitly gives the QR factorization of inv(B)*A:
34                    inv(B)*A = Z'*(inv(T)*R)
35       where  inv(B)  denotes  the inverse of the matrix B, and Z' denotes the
36       transpose of the matrix Z.
37

ARGUMENTS

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

FURTHER DETAILS

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