Visible to Intel only — GUID: GUID-D7A740EC-F8D8-4A1F-8D41-35BAD3906CD9
Visible to Intel only — GUID: GUID-D7A740EC-F8D8-4A1F-8D41-35BAD3906CD9
?ormr2/?unmr2
Multiplies a general matrix by the orthogonal/unitary matrix from a RQ factorization determined by ?gerqf (unblocked algorithm).
Syntax
call sormr2( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
call dormr2( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
call cunmr2( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
call zunmr2( side, trans, m, n, k, a, lda, tau, c, ldc, work, info )
Include Files
- mkl.fi
Description
The routine ?ormr2/?unmr2 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(1)*H(2)*...*H(k) for real flavors, or Q = (H(1))H*(H(2))H*...*(H(k))H as returned by ?gerqf.
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 sormr2
DOUBLE PRECISION for dormr2
COMPLEX for cunmr2
DOUBLE COMPLEX for zunmr2.
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 ?gerqf in the last k rows 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. lda≥ max(1,k).
- tau
-
REAL for sormr2
DOUBLE PRECISION for dormr2
COMPLEX for cunmr2
DOUBLE COMPLEX for zunmr2.
Array, DIMENSION (k).
tau(i) must contain the scalar factor of the elementary reflector H(i), as returned by ?gerqf.
- c
-
REAL for sormr2
DOUBLE PRECISION for dormr2
COMPLEX for cunmr2
DOUBLE COMPLEX for zunmr2.
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 sormr2
DOUBLE PRECISION for dormr2
COMPLEX for cunmr2
DOUBLE COMPLEX for zunmr2.
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