HP MLIB User's Guide Vol. 1 7th Ed.
Chapter 3 Basic Matrix Operations 355
General band matrix-vector multiply F_SGBMV/F_DGBMV/F_CGBMV/F_ZGBMV
Name F_SGBMV/F_DGBMV/F_CGBMV/F_ZGBMV
General band matrix-vector multiply
Purpose F_xGBMV multiplies a vector x by a general band matrix A, its transpose, or its
conjugate transpose, scales the resulting vector, and adds it to the scaled vector
operand y. If m or n is less than or equal to zero, or if β is equal to one and α is
equal to zero, the routine returns immediately. If kl or ku is less than zero, or if
lda is less than kl + ku + 1, an error flag is set and passed to the error handler.
The matrix-vector multiply can be defined as one of the following:
Refer to “SGBMV/DGBMV/CGBMV/ZGBMV” on page 212 for a description of
the equivalent HP MLIB legacy BLAS subprograms and an example of the
storage of general band matrices.
Matrix
Storage
Because it is not necessary to store or operate on the zeros outside the band of
A, you need only provide the elements within the band of A. The subprograms
for general band matrices use less storage than the subprograms for general
full matrices if kl+ku < n.
Usage VECLIB
INTEGER*4 INCX, INCY, KL, KU, LDA, M, N, TRANS
REAL*4 ALPHA, BETA
REAL*4 A( LDA, * ), X( * ), Y( * )
SUBROUTINE F_SGBMV (TRANS, M, N, KL, KU, ALPHA, A, LDA, X,
INCX, BETA, Y, INCY)
INTEGER*4 INCX, INCY, KL, KU, LDA, M, N, TRANS
REAL*8 ALPHA, BETA
REAL*8 A( LDA, * ), X( * ), Y( * )
SUBROUTINE F_DGBMV (TRANS, M, N, KL, KU, ALPHA, A, LDA, X,
INCX, BETA, Y, INCY)
INTEGER*4 INCX, INCY, KL, KU, LDA, M, N, TRANS
COMPLEX*8 ALPHA, BETA
COMPLEX*8 A( LDA, * ), X( * ), Y( * )
SUBROUTINE F_CGBMV (TRANS, M, N, KL, KU, ALPHA, A, LDA, X,
INCX, BETA, Y, INCY)
y αAx βy+←
y αA
T
x βy+←
y αA
*
x βy+←