unmrz#
Functions
-
void cunmrz(const char *side, const char *trans, const INT m, const INT n, const INT k, const INT l, c64 *restrict A, const INT lda, const c64 *restrict tau, c64 *restrict C, const INT ldc, c64 *restrict work, const INT lwork, INT *info)#
CUNMRZ 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 CTZRZF. Q is of order M if SIDE = ‘L’ and of order N if SIDE = ‘R’.Q = H(1) H(2) . . . H(k)
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.
inlThe number of columns of the matrix A containing the meaningful part of the Householder reflectors. If SIDE = ‘L’, m >= l >= 0, if SIDE = ‘R’, n >= l >= 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 CTZRZF in the last k rows of its array argument A. A is modified by the routine but restored on exit.
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 CTZRZF.
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 cunmrz(
const char* side,
const char* trans,
const INT m,
const INT n,
const INT k,
const INT l,
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 zunmrz(const char *side, const char *trans, const INT m, const INT n, const INT k, const INT l, c128 *restrict A, const INT lda, const c128 *restrict tau, c128 *restrict C, const INT ldc, c128 *restrict work, const INT lwork, INT *info)#
ZUNMRZ 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 ZTZRZF. Q is of order M if SIDE = ‘L’ and of order N if SIDE = ‘R’.Q = H(1) H(2) . . . H(k)
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.
inlThe number of columns of the matrix A containing the meaningful part of the Householder reflectors. If SIDE = ‘L’, m >= l >= 0, if SIDE = ‘R’, n >= l >= 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 ZTZRZF in the last k rows of its array argument A. A is modified by the routine but restored on exit.
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 ZTZRZF.
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 zunmrz(
const char* side,
const char* trans,
const INT m,
const INT n,
const INT k,
const INT l,
c128* restrict A,
const INT lda,
const c128* restrict tau,
c128* restrict C,
const INT ldc,
c128* restrict work,
const INT lwork,
INT* info
);