-
template<typename T>
void orml2(char *side, char *trans, integer *m, integer *n, integer *k, T *a, integer *lda, T *tau, T *c, integer *ldc, T *work, integer *info)# Apply Q or Q’ from LQ factorization.
Purpose:
Apply Q or Q' from LQ factorization. Overwrite the general real m-by-n matrix c with Q * C if side = 'L' and trans = 'N', or Q**T* C if side = 'L' and trans = 'T', or C * Q if side = 'R' and trans = 'N', or C * Q**T if side = 'R' and trans = 'T', where Q is a real orthogonal matrix defined as the product of k elementary reflectors Q = H(k) . . . H(2) H(1) as returned by SGELQF. Q is of order m if side = 'L' and of order n
- Parameters:
side – [in]
side is char*
= ‘L’: apply Q or Q**T from the Left;
= ‘R’: apply Q or Q**T from the Right.trans – [in]
trans is char*
= ‘N’: No transpose, apply Q;
= ‘T’: Transpose, apply Q**T.m – [in]
m is integer*
The number of rows of the matrix c. 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 float/double 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 = 1,2,…,k, as returned by SGELQF in the first k rows of its array argument a.
a is modified by the routine but restored on exit.lda – [in]
lda is integer*
The leading dimension of the array a. lda >= fla_max(1,k).
tau – [in]
tau is float/double array, dimension (k)
tau(i) must contain the scalar factor of the elementary reflector H(i), as returned by SGELQF.
c – [inout]
c is float/double 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]
WORK is REAL array, dimension
(N) if SIDE = ‘L’,
(M) if SIDE = ‘R’INFO – [out]
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value