unmrq#
Functions
-
void cunmrq(const char *side, const char *trans, const INT m, const INT n, const INT k, c64 *restrict A, const INT lda, const c64 *restrict tau, c64 *restrict C, const INT ldc, c64 *restrict work, const INT lwork, INT *info)#
CUNMRQ overwrites the general complex M-by-N matrix C with.
TRANS = ‘N’: Q * C C * Q TRANS = ‘C’: Q**H * C C * Q**HSIDE = 'L' SIDE = 'R'
where Q is a complex unitary matrix defined as the product of k elementary reflectors
as returned by CGERQF. Q is of order M if SIDE = ‘L’ and of order N if SIDE = ‘R’.Q = H(1)**H H(2)**H . . . H(k)**H
If lwork = -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 lwork is issued by xerbla.
Parameters
inside‘L’: apply Q or Q**H from the Left; ‘R’: apply Q or Q**H from the Right.
intrans‘N’: No transpose, apply Q; ‘C’: Conjugate transpose, apply Q**H.
inmThe number of rows of the matrix C. m >= 0.
innThe number of columns of the matrix C. n >= 0.
inkThe number of elementary reflectors whose product defines the matrix Q. If SIDE = ‘L’, m >= k >= 0; if SIDE = ‘R’, n >= k >= 0.
inASingle complex array, dimension (lda, m) if SIDE = ‘L’, (lda, n) if SIDE = ‘R’ The i-th row must contain the vector which defines the elementary reflector H(i), for i = 0,1,…,k-1, as returned by CGERQF in the last k rows of its array argument A.
inldaThe leading dimension of the array A. lda >= max(1, k).
intauSingle complex array, dimension (k). tau[i] must contain the scalar factor of the elementary reflector H(i), as returned by CGERQF.
inoutCSingle complex array, dimension (ldc, n). On entry, the M-by-N matrix C. On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
inldcThe leading dimension of the array C. ldc >= max(1, m).
outworkSingle complex array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.
inlworkThe dimension of the array work. If SIDE = ‘L’, lwork >= max(1, n); if SIDE = ‘R’, lwork >= max(1, m). For good performance, lwork should generally be larger.
outinfo= 0: successful exit < 0: if info = -i, the i-th argument had an illegal value
void cunmrq(
const char* side,
const char* trans,
const INT m,
const INT n,
const INT k,
c64* restrict A,
const INT lda,
const c64* restrict tau,
c64* restrict C,
const INT ldc,
c64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void zunmrq(const char *side, const char *trans, const INT m, const INT n, const INT k, c128 *restrict A, const INT lda, const c128 *restrict tau, c128 *restrict C, const INT ldc, c128 *restrict work, const INT lwork, INT *info)#
ZUNMRQ overwrites the general complex M-by-N matrix C with.
TRANS = ‘N’: Q * C C * Q TRANS = ‘C’: Q**H * C C * Q**HSIDE = 'L' SIDE = 'R'
where Q is a complex unitary matrix defined as the product of k elementary reflectors
as returned by ZGERQF. Q is of order M if SIDE = ‘L’ and of order N if SIDE = ‘R’.Q = H(1)**H H(2)**H . . . H(k)**H
If lwork = -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 lwork is issued by xerbla.
Parameters
inside‘L’: apply Q or Q**H from the Left; ‘R’: apply Q or Q**H from the Right.
intrans‘N’: No transpose, apply Q; ‘C’: Conjugate transpose, apply Q**H.
inmThe number of rows of the matrix C. m >= 0.
innThe number of columns of the matrix C. n >= 0.
inkThe number of elementary reflectors whose product defines the matrix Q. If SIDE = ‘L’, m >= k >= 0; if SIDE = ‘R’, n >= k >= 0.
inADouble complex array, dimension (lda, m) if SIDE = ‘L’, (lda, n) if SIDE = ‘R’ The i-th row must contain the vector which defines the elementary reflector H(i), for i = 0,1,…,k-1, as returned by ZGERQF in the last k rows of its array argument A.
inldaThe leading dimension of the array A. lda >= max(1, k).
intauDouble complex array, dimension (k). tau[i] must contain the scalar factor of the elementary reflector H(i), as returned by ZGERQF.
inoutCDouble complex array, dimension (ldc, n). On entry, the M-by-N matrix C. On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
inldcThe leading dimension of the array C. ldc >= max(1, m).
outworkDouble complex array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.
inlworkThe dimension of the array work. If SIDE = ‘L’, lwork >= max(1, n); if SIDE = ‘R’, lwork >= max(1, m). For good performance, lwork should generally be larger.
outinfo= 0: successful exit < 0: if info = -i, the i-th argument had an illegal value
void zunmrq(
const char* side,
const char* trans,
const INT m,
const INT n,
const INT k,
c128* restrict A,
const INT lda,
const c128* restrict tau,
c128* restrict C,
const INT ldc,
c128* restrict work,
const INT lwork,
INT* info
);