-
template<typename T>
void gemlq(char *side, char *trans, integer *m, integer *n, integer *k, T *a, integer *lda, T *t, integer *tsize, T *c, integer *ldc, T *work, integer *lwork, integer *info)# Overwrites general matrix with a form compatible with orthogonal matrix.
Purpose:
GEMLQ overwrites the general real M-by-N matrix C with SIDE = 'L' SIDE = 'R' TRANS = 'N': Q * C C * Q TRANS = 'T': Q**T * C C * Q**T where Q is a real orthogonal matrix defined as the product of blocked elementary reflectors computed by short wide LQ factorization (GELQ)
- Parameters:
SIDE – [in]
SIDE is CHARACTER*1
= ‘L’: apply Q or Q**T from the Left;
= ‘R’: apply Q or Q**T from the Right.TRANS – [in]
TRANS is CHARACTER*1
= ‘N’: No transpose, apply Q;
= ‘T’: Transpose, apply Q**T.M – [in]
M is INTEGER
The number of rows of the matrix A. M >=0.
N – [in]
N is INTEGER
The number of columns of the matrix C. N >= 0.
K – [in]
K is INTEGER
The number of elementary reflectors whose product defines the matrix Q.
If SIDE = ‘L’, M >= K >= 0;
if SIDE = ‘R’, N >= K >= 0.
A – [in]
A is REAL array, dimension
(LDA,M) if SIDE = ‘L’,
(LDA,N) if SIDE = ‘R’
Part of the data structure to represent Q as returned by DGELQ.
@para@[in] LDA LDA is INTEGER
The leading dimension of the array A. LDA >= fla_max(1,K).
T – [in]
T is REAL array, dimension (MAX(5,TSIZE)).
Part of the data structure to represent Q as returned by SGELQ.
TSIZE – [in]
TSIZE is INTEGER
The dimension of the array T. TSIZE >= 5.
C – [inout]
C is REAL array, dimension (LDC,N)
On entry, the M-by-N matrix C.
On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.LDC – [in]
LDC is INTEGER
The leading dimension of the array C. LDC >= fla_max(1,M).
WORK – [out] (workspace) REAL array, dimension (MAX(1,LWORK))
LWORK – [in]
LWORK is INTEGER
The dimension of the array WORK.
If LWORK = -1, then a workspace query is assumed. The routine only calculates the size of the WORK array, returns this value as WORK(1), and no error message related to WORK is issued by XERBLA.INFO – [out]
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value