BLAS Level 3 Routines

?gemm performs a matrix-matrix operation
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)

?hemm performs one of the following matrix-matrix operations:
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)

?herk performs a rank-n update of a Hermitian matrix, that is, one of the following operations:
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)

?her2k performs a rank-2k update of an 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)

?symm performs one of the following matrix-matrix operations using symmetric matrices:
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)

?syrk performs a rank-n update of an 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)

?syr2k performs a rank-2k update of an 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)

?trmm performs one of the matrix-matrix operations using triangular matrices:
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)

?trsm solves one of the following matrix equations:
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