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

NAME

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

SYNOPSIS

10       SUBROUTINE SGGRQF( 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           REAL           A(  LDA,  *  ),  B(  LDB, * ), TAUA( * ), TAUB( * ),
16                          WORK( * )
17

PURPOSE

19       SGGRQF 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) REAL 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) REAL 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) REAL array, dimension (LDB,N) On entry,  the  P-
64               by-N matrix B.  On exit, the elements on and above the diagonal
65               of the array contain the min(P,N)-by-N upper trapezoidal matrix
66               T  (T  is  upper  triangular if P >= N); the elements below the
67               diagonal, with the array TAUB, represent the orthogonal  matrix
68               Z  as a product of elementary reflectors (see Further Details).
69               LDB     (input) INTEGER The leading dimension of the  array  B.
70               LDB >= max(1,P).
71
72       TAUB    (output) REAL 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)  REAL  array,  dimension  (MAX(1,LWORK))  On
76               exit, if INFO = 0, WORK(1) returns the optimal LWORK.
77
78       LWORK   (input) INTEGER
79               The dimension of the array WORK. LWORK  >=  max(1,N,M,P).   For
80               optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), where
81               NB1 is the optimal blocksize for the RQ factorization of an  M-
82               by-N matrix, NB2 is the optimal blocksize for the QR factoriza‐
83               tion of a P-by-N matrix, and NB3 is the optimal blocksize for a
84               call  of  SORMRQ.   If  LWORK  =  -1, then a workspace query is
85               assumed; the routine only calculates the optimal  size  of  the
86               WORK  array,  returns this value as the first entry of the WORK
87               array, and no error message  related  to  LWORK  is  issued  by
88               XERBLA.
89
90       INFO    (output) INTEGER
91               = 0:  successful exit
92               < 0:  if INF0= -i, the i-th argument had an illegal value.
93

FURTHER DETAILS

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