# BLAS1_S Basic Linear Algebra Subprograms Level 1 Single Precision Real Arithmetic

BLAS1_S is a MATLAB library which implements the Level 1 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 LINPACK and LAPACK linear algebra libraries make extensive use of the BLAS.

The Level 1 BLAS are primarily for use in vector operations. In certain cases, they may also be used to operate on the rows or columns of a two-dimensional array.

It is worth questioning whether one should try to implement the Level 1 BLAS in MATLAB: for one thing, the MATLAB language makes it very easy to carry out vector operations, even with nonunit incrementing on the vector indices. Moreover, MATLAB actually makes it more difficult to stick with the syntax of the BLAS, since it is not so easy to make a two dimensional array "look like" a vector.

In particular, if you want to work on a row of a matrix, MATLAB essentially prefers you to make a temporary vector, as in "A(3,1:N)"; in the standard BLAS, you would instead pass the location of the first entry, A(3,1), and an increment, LDA, that will lead to the next entry of the row. This is not easy or natural to do in MATLAB. Still, for consistency, I have gone ahead and tried to make a reasonable effort at implementing the Level 1 BLAS.

### Languages:

BLAS1_S is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

### Related Data and Programs:

BLAS1_C, a MATLAB library which is the single precision complex arithmetic version of BLAS1.

BLAS1_D, a MATLAB library which is the double precision real arithmetic version of BLAS1.

BLAS1_Z, a MATLAB library which is the double precision complex arithmetic version of BLAS1.

GSL, a C++ library which includes an implementation of the BLAS1 routines.

LAPACK_EXAMPLES, a FORTRAN90 program which demonstrates the use of the LAPACK linear algebra library.

LINPACK, a MATLAB library which is a linear algebra package that uses the BLAS1 routines.

SUPER_BLAS, a C library which is a version of some of the BLAS1 routines.

### Author:

Original FORTRAN77 version by Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh. MATLAB version by John Burkardt.

### Reference:

1. Thomas Coleman, Charles vanLoan,
Handbook for Matrix Computations,
SIAM, 1988,
ISBN13: 978-0-898712-27-8,
LC: QA188.C65.
2. Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
LINPACK User's Guide,
SIAM, 1979,
ISBN13: 978-0-898711-72-1,
LC: QA214.L56.
3. 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:

• isamax.m, returns the index of the vector entry of greatest magnitude;
• sasum.m, sums the absolute values of the entries of a vector;
• saxpy.m, adds a constant times one vector to another.
• scopy.m, makes a copy of a vector;
• sdot.m, computes the scalar product of two vectors;
• smach.m, computes real machine parameters.
• snrm2.m, computes the Euclidean norm of a vector.
• srot.m, applies a plane rotation.
• srotg.m, constructs a Givens plane rotation.
• sscal.m, scales a vector by a constant.
• sswap.m, interchanges two vectors.

### Utility Routines:

• lsame.m, returns .TRUE. if CA is the same letter as CB regardless of case.
• r4_sign.m, returns the sign of an R4.
• r4_uniform_01.m, returns a unit pseudorandom R4.
• timestamp.m, prints the YMDHMS date as a timestamp.
• xerbla.m, is an error handler for the LAPACK routines.

You can go up one level to the MATLAB source codes.

Last revised on 24 June 2009.