Matrix-vector multiply

SSBMV/DSBMV/CHBMV/ZHBMV

Upper triangular storage

The upper triangle of A is stored in an array ab with at least kd+1 = 3 rows and 7 columns as follows:

*

*

13

24

35

46

57

*

12

23

34

45

56

67

11

22

33

44

55

66

77

The asterisks represent elements in the kd-by-kdtriangle at the upper left corner of ab that are not referenced. Thus, if aij is an element within the band of

the upper triangle of A, it is stored in ab(kd+1+ij,j). Therefore, the columns of the upper triangle of A are stored in the columns of ab, and the diagonals of the upper triangle of A are stored in the rows of ab, with the principal diagonal in row kd+1, the first superdiagonal starting in the second position in row kd, and so on.

Lower triangular storage

The lower triangle of A is stored in the array ab as follows:

11

22

33

44

55

66

77

12

23

34

45

56

67

*

13

24

35

46

57

*

*

The asterisks represent elements in the kd-by-kdtriangle at the lower right corner of ab that are not referenced. Thus, if aij is an element within the band of

the lower triangle of A, it is stored in ab(1+ij,j). Therefore, the columns of the lower triangle of A are stored in the columns of ab, and the diagonals of the lower triangle of A are stored in the rows of ab, with the principal diagonal in the first row, the first subdiagonal in the second row, and so on.

Usage

VECLIB:

 

 

CHARACTER*1

uplo

 

INTEGER*4

n, kd, ldab, incx, incy

 

REAL*4

alpha, beta, ab(ldab, n), x(lenx), y(leny)

CALL SSBMV(uplo, n, kd, alpha, ab, ldab, x, incx, beta, y, incy)

CHARACTER*1

uplo

INTEGER*4

n, kd, ldab, incx, incy

REAL*8

alpha, beta, ab(ldab, n), x(lenx), y(leny)

CALL DSBMV(uplo, n, kd, alpha, ab, ldab, x, incx, beta, y, incy)

Chapter 3 Basic Matrix Operations 245