Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

?gemqr

Multiples a matrix
C
by a real orthogonal or complex unitary matrix
Q
, as computed by
?geqr
, with best performance for tall and skinny matrices.
call sgemqr
(
side
,
trans
,
m
,
n
,
k
,
a
,
lda
,
t
,
tsize
,
c
,
ldc
,
work
,
lwork
,
info
)
call dgemqr
(
side
,
trans
,
m
,
n
,
k
,
a
,
lda
,
t
,
tsize
,
c
,
ldc
,
work
,
lwork
,
info
)
call cgemqr
(
side
,
trans
,
m
,
n
,
k
,
a
,
lda
,
t
,
tsize
,
c
,
ldc
,
work
,
lwork
,
info
)
call zgemqr
(
side
,
trans
,
m
,
n
,
k
,
a
,
lda
,
t
,
tsize
,
c
,
ldc
,
work
,
lwork
,
info
)
Description
The
?gemqr
routine multiplies an
m
-by-
n
matrix
C
by Op(
Q
), where matrix
Q
is the factor from the LQ factorization of matrix
A
formed by
?geqr
, and
Op(
Q
) =
Q
, or
Op(
Q
) =
Q
T
, or
Op(
Q
) =
Q
H
.
You must use
?geqr
for LQ factorization before calling
?gemqr
.
?gemqr
is not compatible with QR factorization routines other than
?geqr
.
For real flavors,
C
is real and
Q
is real orthogonal.
For complex flavors,
C
is complex and
Q
is complex unitary.
If matrix
A
is tall and skinny, a highly scalable algorithm is used to avoid communication overhead. Otherwise,
?ormqr
or
?unmqr
is used.
Input Parameters
side
CHARACTER*1
.
If
side
= 'L'
: apply Op(
Q
) from the left.
If
side
= 'R'
': apply Op(
Q
) from the right.
trans
CHARACTER*1
.
If
trans
= 'N'
: No transpose, Op(
Q
) =
Q
.
If
trans
= 'T'
: Transpose, Op(
Q
) =
Q
T
.
If
trans
= 'C'
: Conjugate transpose, Op(
Q
) =
Q
H
.
m
INTEGER
.
The number of rows of the matrix
A
.
m
0.
n
INTEGER
.
The number of columns of the matrix
C
.
m
n
0.
k
INTEGER
.
The number of elementary reflectors whose product defines the matrix Q.
If
side
= 'L',
m
k
0.
if