BLAS3
Level 3 Basic Linear Algebra Subprograms
BLAS3
is a FORTRAN77 library which
implements the Level 3
BLAS, or Basic Linear Algebra Subprograms.
The BLAS are a small core library of linear algebra utilities,
which can be highly optimized for various architectures. Software
that relies on the BLAS is thus highly portable, and will typically
run very efficiently.
The Level 3 BLAS are designed to handle matrix-matrix operations.
Languages:
BLAS3 is available in
a FORTRAN90 version and
a FORTRAN77 version.
Related Data and Programs:
BLAS1,
a FORTRAN77 library which
handles vector-vector operations.
BLAS2,
a FORTRAN77 library which
handles matrix-vector operations.
LAPACK_EXAMPLES,
a FORTRAN77 program which
demonstrates the use of the LAPACK linear algebra library.
LINPACK,
a FORTRAN77 library which
is a linear algebra library.
Reference:
-
Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford,
James Demmel, Jack Dongarra, Jeremy Du Croz, Anne Greenbaum,
Sven Hammarling, Alan McKenney, Danny Sorensen,
LAPACK User's Guide,
Third Edition,
SIAM, 1999,
ISBN: 0898714478,
LC: QA76.73.F25L36.
-
Thomas Coleman, Charles vanLoan,
Handbook for Matrix Computations,
SIAM, 1988,
ISBN13: 978-0-898712-27-8,
LC: QA188.C65.
-
Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
LINPACK User's Guide,
SIAM, 1979,
ISBN13: 978-0-898711-72-1,
LC: QA214.L56.
-
Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
Algorithm 539:
Basic Linear Algebra Subprograms for Fortran Usage,
ACM Transactions on Mathematical Software,
Volume 5, Number 3, September 1979, pages 308-323.
Source Code:
-
blas3.f, the matrix-matrix code;
-
blas3.sh, commands to compile
the source code;
Examples and Tests:
List of Routines:
-
CGEMM C:=alpha*A*B+beta*C, A, B, C
rectangular complex matrices.
-
CSYMM C:=alpha*A*B+beta*C, A symmetric, B and C
rectangular complex matrices.
-
CHEMM C:=alpha*A*B+beta*C, A Hermitian, B and C
rectangular complex matrices.
-
CHERK C:=alpha*A*Hermitian(A)+beta*C, A, B
rectangular, C square complex matrices.
-
CHER2K
C:=alpha*A*Hermitian(B)+conjugate(alpha)*B*Hermitian(A)+beta*C,
A, B rectangular, C square complex matrices.
-
CSYRK C:=alpha*A*TRANSPOSE(A)+beta*C, A general,
C square complex matrices.
-
CSYR2K C:=alpha*A*TRANSPOSE(B)+alpha*B*TRANSPOSE(A)+beta*C,
A, B rectangular, C square complex matrices.
-
CTRMM B:=A*B or B:=B*A, A triangular, B rectangular
complex matrices.
-
CTRSM B:=INVERSE(A)*C or B:=C*INVERSE(A),
A triangular, B and C rectangular complex matrices.
-
DGEMM C:=alpha*A*B+beta*C, A, B, C
rectangular double precision matrices.
-
DSYMM C:=alpha*A*B+beta*C, A symmetric, B and C
rectangular double precision matrices.
-
DSYRK C:=alpha*A*TRANSPOSE(A)+beta*C, A general,
C symmetric double precision matrices.
-
DSYR2K C:=alpha*A*TRANSPOSE(B)+alpha*B*TRANSPOSE(A)+beta*C,
A, B rectangular, C symmetric double precision matrices.
-
DTRMM B:=A*B or B:=B*A, A triangular, B rectangular
double precision matrices.
-
DTRSM B:=INVERSE(A)*C or B:=C*INVERSE(A),
A triangular, B and C rectangular double precision matrices.
-
SGEMM C:=alpha*A*B+beta*C, A, B, C
rectangular real matrices.
-
SSYMM C:=alpha*A*B+beta*C, A symmetric, B and C
rectangular real matrices.
-
SSYRK C:=alpha*A*TRANSPOSE(A)+beta*C, A general,
C symmetric real matrices.
-
SSYR2K C:=alpha*A*TRANSPOSE(B)+alpha*B*TRANSPOSE(A)+beta*C,
A, B rectangular, C symmetric real matrices.
-
STRMM B:=A*B or B:=B*A, A triangular, B rectangular
real matrices.
-
STRSM B:=INVERSE(A)*C or B:=C*INVERSE(A),
A triangular, B and C rectangular real matrices.
-
ZGEMM C:=alpha*A*B+beta*C, A, B, C
rectangular double complex matrices.
-
ZSYMM C:=alpha*A*B+beta*C, A symmetric, B and C
rectangular double complex matrices.
-
ZHEMM C:=alpha*A*B+beta*C, A Hermitian, B and C
rectangular double complex matrices.
-
ZHERK C:=alpha*A*Hermitian(A)+beta*C, A, B
rectangular, C square double complex matrices.
-
ZHER2K
C:=alpha*A*Hermitian(B)+conjugate(alpha)*B*Hermitian(A)+beta*C,
A, B rectangular, C square double complex matrices.
-
ZSYRK C:=alpha*A*TRANSPOSE(A)+beta*C, A general,
C square double complex matrices.
-
ZSYR2K C:=alpha*A*TRANSPOSE(B)+alpha*B*TRANSPOSE(A)+beta*C,
A, B rectangular, C square double complex matrices.
-
ZTRMM B:=A*B or B:=B*A, A triangular, B rectangular
double complex matrices.
-
ZTRSM B:=INVERSE(A)*C or B:=C*INVERSE(A),
A triangular, B and C rectangular double complex matrices.
You can go up one level to
the FORTRAN77 source codes.
Last revised on 15 February 2006.