BLAS Level 3 Routines
?gemm
performs a matrix-matrix operation
?hemm
performs one of the following matrix-matrix operations:
?herk
performs a rank-n update of a Hermitian matrix, that is, one of the following operations:
?her2k
performs a rank-2k update of an
?symm
performs one of the following matrix-matrix operations using symmetric matrices:
?syrk
performs a rank-n update of an
?syr2k
performs a rank-2k update of an
?trmm
performs one of the matrix-matrix operations using triangular matrices:
?trsm
solves one of the following matrix equations:
c := alpha*op(a)*op(b) +
beta*c,
where c is an
m-by-n
matrix,
op(a) is an
m-by-k
matrix,
op(b) is a
k-by-n
matrix.
For the definition of op(a) and op(b), see Matrix Arguments.
call sgemm (transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
call dgemm (transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
call cgemm (transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
call zgemm (transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
c := alpha*a*b +
beta*c
for side =
'L'or'l'
c := alpha*b*a +
beta*c
for side =
'R'or'r',
where a is a Hermitian matrix,
b and c are
m-by-n
matrices.
call chemm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
call zhemm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
c :=
alpha*a*conjug(a') +
beta*c
for trans =
'N'or'n'
c :=
alpha*conjug(a')*a
+
beta*c
for trans =
'C'or'c',
where c is an
n-by-n
Hermitian matrix;
a is an
n-by-k
matrix, if
trans =
'N'or'n',
a is a
k-by-n
matrix, if
trans =
'C'or'c'.
call cherk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
call zherk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
n-by-n
Hermitian matrix c, that is, one of the following operations:
c :=
alpha*a*conjg(b') + conjg(alpha)*b*conjg(a') + beta*c,
for trans =
'N'or'n'
c :=
alpha*conjg(b')*a + conjg(alpha)*conjg(a')*b + beta*c,
for trans =
'C'or'c'
where c is an
n-by-n
Hermitian matrix;
a and b are
n-by-k
matrices if
trans =
'N'or'n',
a and b are
k-by-n
matrices if
trans =
'C'or'c'.
call cher2k (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
call zher2k (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
c := alpha*a*b +
beta*c
for side =
'L'or'l'
c := alpha*b*a +
beta*c
for side =
'R'or'r',
where a is a symmetric matrix,
b and c are
m-by-n
matrices.
call ssymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
call dsymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
call csymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
call zsymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
n-by-n
symmetric matrix c, that is, one of the following operations:
c := alpha*a*a' +
beta*c
for trans =
'N'or'n'
c := alpha*a'*a +
beta*c
for trans =
'T'or't','C'or'c',
where c is an
n-by-n
symmetric matrix;
a is an
n-by-k
matrix, if
trans =
'N'or'n',
a is a
k-by-n
matrix, if
trans =
'T'or't','C'or'c'.
call ssyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
call dsyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
call csyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
call zsyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
n-by-n
symmetric matrix c, that is, one of the following operations:
c := alpha*a*b' + alpha*b*a' +
beta*c
for trans =
'N'or'n'
c := alpha*a'*b + alpha*b'*a +
beta*c
for trans =
'T'or't',
where c is an
n-by-n
symmetric matrix;
a and b are
n-by-k
matrices, if
trans =
'N'or'n',
a and b are
k-by-n
matrices, if
trans =
'T'or't'.
call ssyr2k (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
call dsyr2k (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
call csyr2k (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
call zsyr2k (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
b := alpha*op(a)*b
for side =
'L'or'l'
b := alpha*b*op(a)
for side =
'R'or'r',
where b is an
m-by-n
general matrix, and a is triangular;
op(a) must be an
m-by-m
matrix, if
side =
'L'or'l'
op(a) must be an
n-by-n
matrix, if
side =
'R'or'r'.
For the definition of op(a), see Matrix Arguments.
call strmm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
call dtrmm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
call ctrmm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
call ztrmm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
op(a)*x = alpha*b
or
x*op(a) = alpha*b,
where x and b are
m-by-n
general matrices, and a is triangular;
op(a) must be an
m-by-m
matrix, if
side =
'L'or'l'
op(a) must be an
n-by-n
matrix, if
side =
'R'or'r'.
For the definition of op(a), see Matrix Arguments.
The routine overwrites x on b.
call strsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
call dtrsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
call ctrsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
call ztrsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
* Legal Information © 1999, 2002-2004, Intel Corporation