Developer Reference

  • 098
  • 03/30/2020
  • Public Content
Contents

?gemm3m

Computes a scalar-matrix-matrix product using matrix multiplications and adds the result to a scalar-matrix product.

Syntax

call cgemm3m
(
transa
,
transb
,
m
,
n
,
k
,
alpha
,
a
,
lda
,
b
,
ldb
,
beta
,
c
,
ldc
)
call zgemm3m
(
transa
,
transb
,
m
,
n
,
k
,
alpha
,
a
,
lda
,
b
,
ldb
,
beta
,
c
,
ldc
)
call gemm3m
(
a
,
b
,
c
[
,
transa
]
[
,
transb
]
[
,
alpha
]
[
,
beta
]
)
Include Files
  • mkl.fi
    ,
    blas.f90
Description
The
?gemm3m
routines perform a matrix-matrix operation with general complex matrices. These routines are similar to the
?gemm
routines, but they use fewer matrix multiplication operations
(see
Application Notes
below)
.
The operation is defined as
C
:=
alpha
*op(
A
)*op(
B
) +
beta
*C
,
where:
op(
x
)
is one of
op(
x
) =
x
, or
op(
x
) =
x
'
, or
op(
x
) = conjg(
x
')
,
alpha
and
beta
are scalars,
A
,
B
and
C
are matrices:
op(
A
)
is an
m
-by-
k
matrix,
op(
B
)
is a
k
-by-
n
matrix,
C
is an
m
-by-
n
matrix.
Input Parameters
transa
CHARACTER*1
.
Specifies the form of
op(
A
)
used in the matrix multiplication:
if
transa
= 'N'
or
'n'
, then
op(
A
) =
A
;
if
transa
= 'T'
or
't'
, then
op(
A
) =
A
'
;
if
transa
= 'C'
or
'c'
, then
op(
A
) = conjg(
A
')
.
transb
CHARACTER*1
.
Specifies the form of
op(
B
)
used in the matrix multiplication:
if
transb
= 'N'
or
'n'
, then
op(
B
) =
B
;
if
transb
= 'T'
or
't'
, then
op(
B
) =
B
'
;
if
transb
= 'C'
or
'c'
, then
op(
B
) = conjg(
B
')
.
m
INTEGER
.
Specifies the number of rows of the matrix
op(
A
)
and of the matrix
C
. The value of
m
must be at least zero.
n
INTEGER
.
Specifies the number of columns of the matrix
op(
B
)
and the number of columns of the matrix
C
.
The value of
n
must be at least zero.
k
INTEGER
.
Specifies the number of columns of the matrix
op(
A
)
and the number of rows of the matrix
op(
B
)
.
The value of
k
must be at least zero.
alpha
COMPLEX
for
cgemm3m
DOUBLE COMPLEX
for
zgemm3m
Specifies the scalar
alpha
.
a
COMPLEX
for
cgemm3m
DOUBLE COMPLEX
for
zgemm3m
Array, size
lda
by
ka
, where
ka
is
k
when
transa
= 'N'
or
'n'
, and is
m
otherwise. Before entry with
transa
= 'N'
or
'n'
, the leading
m
-by-
k
part of the array
a
must contain the matrix
A
, otherwise the leading
k
-by-
m
part of the array
a
must contain the matrix
A
.
lda
INTEGER
.
Specifies the leading dimension of
a
as declared in the calling (sub)program.
When
transa
= 'N'
or
'n'
, then
lda
must be at least
max(1,