Visible to Intel only — GUID: GUID-76F8B670-E6C4-4487-92B5-73F5896E2CBD
Visible to Intel only — GUID: GUID-76F8B670-E6C4-4487-92B5-73F5896E2CBD
?orm2l/?unm2l
Multiplies a general matrix by the orthogonal/unitary matrix from a QL factorization determined by ?geqlf (unblocked algorithm).
Syntax
call sorm2l( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
call dorm2l( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
call cunm2l( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
call zunm2l( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
Include Files
- mkl.fi
Description
The routine ?orm2l/?unm2l overwrites the general real/complex m-by-n matrix C with
Q*C if side = 'L' and trans = 'N', or
QT*C / QH*C if side = 'L' and trans = 'T' (for real flavors) or trans = 'C' (for complex flavors), or
C*Q if side = 'R' and trans = 'N', or
C*QT / C*QH if side = 'R' and trans = 'T' (for real flavors) or trans = 'C' (for complex flavors).
Here Q is a real orthogonal or complex unitary matrix defined as the product of k elementary reflectors
Q = H(k)*...*H(2)*H(1) as returned by ?geqlf.
Q is of order m if side = 'L' and of order n if side = 'R'.
Input Parameters
- side
-
CHARACTER*1.
= 'L': apply Q or QT / QH from the left
= 'R': apply Q or QT / QH from the right
- trans
-
CHARACTER*1.
= 'N': apply Q (no transpose)
= 'T': apply QT (transpose, for real flavors)
= 'C': apply QH (conjugate transpose, for complex flavors)
- m
-
INTEGER. The number of rows of the matrix C. m≥ 0.
- n
-
INTEGER. The number of columns of the matrix C. n≥ 0.
- k
-
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
-
REAL for sorm2l
DOUBLE PRECISION for dorm2l
COMPLEX for cunm2l
DOUBLE COMPLEX for zunm2l.
Array, DIMENSION (lda,k).
The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,..., k, as returned by ?geqlf in the last k columns of its array argument a. The array a is modified by the routine but restored on exit.
- lda
-
INTEGER. The leading dimension of the array a.
If side = 'L', lda≥ max(1, m)
if side = 'R', lda≥ max(1, n).
- tau
-
REAL for sorm2l
DOUBLE PRECISION for dorm2l
COMPLEX for cunm2l
DOUBLE COMPLEX for zunm2l.
Array, DIMENSION (k). tau(i) must contain the scalar factor of the elementary reflector H(i), as returned by ?geqlf.
- c
-
REAL for sorm2l
DOUBLE PRECISION for dorm2l
COMPLEX for cunm2l
DOUBLE COMPLEX for zunm2l.
Array, DIMENSION (ldc, n).
On entry, the m-by-n matrix C.
- ldc
-
INTEGER. The leading dimension of the array C. ldc≥ max(1,m).
- work
-
REAL for sorm2l
DOUBLE PRECISION for dorm2l
COMPLEX for cunm2l
DOUBLE COMPLEX for zunm2l.
Workspace array, DIMENSION:
(n) if side = 'L',
(m) if side = 'R'.
Output Parameters
- c
-
On exit, c is overwritten by Q*C or QT*C / QH*C, or C*Q, or C*QT / C*QH.
- info
-
INTEGER.
= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value