cgerqf - compute an RQ factorization of a complex M-by-N matrix A
SUBROUTINE CGERQF( M, N, A, LDA, TAU, WORK, LDWORK, INFO) COMPLEX A(LDA,*), TAU(*), WORK(*) INTEGER M, N, LDA, LDWORK, INFO
SUBROUTINE CGERQF_64( M, N, A, LDA, TAU, WORK, LDWORK, INFO) COMPLEX A(LDA,*), TAU(*), WORK(*) INTEGER*8 M, N, LDA, LDWORK, INFO
SUBROUTINE GERQF( [M], [N], A, [LDA], TAU, [WORK], [LDWORK], [INFO]) COMPLEX, DIMENSION(:) :: TAU, WORK COMPLEX, DIMENSION(:,:) :: A INTEGER :: M, N, LDA, LDWORK, INFO
SUBROUTINE GERQF_64( [M], [N], A, [LDA], TAU, [WORK], [LDWORK], * [INFO]) COMPLEX, DIMENSION(:) :: TAU, WORK COMPLEX, DIMENSION(:,:) :: A INTEGER(8) :: M, N, LDA, LDWORK, INFO
#include <sunperf.h>
void cgerqf(int m, int n, complex *a, int lda, complex *tau, int *info);
void cgerqf_64(long m, long n, complex *a, long lda, complex *tau, long *info);
cgerqf computes an RQ factorization of a complex M-by-N matrix A: A = R * Q.
A(1:m,n-m+1:n)
contains the M-by-M upper triangular matrix R;
if m > = n, the elements on and above the (m-n)-th subdiagonal
contain the M-by-N upper trapezoidal matrix R;
the remaining elements, with the array TAU, represent the
unitary matrix Q as a product of min(m,n)
elementary
reflectors (see Further Details).
WORK(1)
returns the optimal LDWORK.
If LDWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LDWORK is issued by XERBLA.
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
The matrix Q is represented as a product of elementary reflectors
Q = H(1)' H(2)' . . . H(k)', where k = min(m,n).
Each H(i)
has the form
H(i) = I - tau * v * v'
where tau is a complex scalar, and v is a complex vector with
v(n-k+i+1:n)
= 0 and v(n-k+i)
= 1; conjg(v(1:n-k+i-1))
is stored on
exit in A(m-k+i,1:n-k+i-1), and tau in TAU(i).