HP MLIB User's Guide Vol. 1 7th Ed.

244 HP MLIB User’s Guide
SSBMV/DSBMV/CHBMV/ZHBMV Matrix-vector multiply
Name SSBMV/DSBMV/CHBMV/ZHBMV
Matrix-vector multiply
Purpose These subprograms compute the matrix-vector product Ax, where A is an
n-by-n real symmetric or complex Hermitian band matrix and x is a real or
complex n-vector. The product can be stored in the result array, or it can be
added to or subtracted from it. This is handled in a convenient, but general,
way by two scalar arguments, α and β, which are used as multipliers of the
matrix-vector product and the result vector. Specifically, these subprograms
compute the matrix-vector product of the form:
The structure of A is indicated by the name of the subprogram used:
A symmetric or Hermitian band matrix is a symmetric or Hermitian matrix
whose nonzero elements all are on, or fairly near, the principal diagonal.
Specifically, a
ij
0 only if |ij| kd for some integer kd, called the half
bandwidth.
Refer to “F_SSBMV/F_DSBMV/F_CSBMV/F_ZSBMV” on page 378 and
“F_CHBMV/F_ZHBMV” on page 340 for a description of the equivalent BLAS
Standard subprograms.
Matrix
Storage
Because it is not necessary to store or operate on the zeros outside the band of
A, and because either triangle of A can be obtained from the other, you only
need to provide the band within one triangle of A. Compared to storing the
entire matrix, this can save memory in two ways: Only the elements within the
band are stored and of them only the upper or the lower triangle.
The following examples illustrate the storage of symmetric band matrices.
Consider the following matrix A of order n = 7 and half bandwidth kd =2:
SSBMV or DSBMV A is a real symmetric band matrix
CHBMV or ZHBMV A is a complex Hermitian band matrix
yaAx←βy.+
1112130000
12 22 23 24 0 0 0
13 23 33 34 35 0 0
02434444546 0
0 0 35 45 55 56 57
0 0 0 46 56 66 67
0 0 0 0576777