Matrix-vector multiply

SSPMV/DSPMV/CHPMV/ZHPMV

Name SSPMV/DSPMV/CHPMV/ZHPMV

Matrix-vector multiply

Purpose These subprograms compute the matrix-vector product Ax, where A is an n-by-nreal symmetric or complex Hermitian matrix stored in packed form as described in “Matrix Storage,” and x is a real or complex n-vector. The product can be stored in the result array, or, optionally, 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:

y aAx + βy.

The structure of A is indicated by the name of the subprogram used:

SSPMV

or

DSPMV

A is a real symmetric matrix

CHPMV

or

ZHPMV

A is a complex Hermitian matrix

Refer to “F_SSPMV/F_DSPMV/F_CSPMV/F_ZSPMV” on page 381 and

“F_CHPMV/F_ZHPMV” on page 348 for a description of the equivalent BLAS Standard subprograms.

Matrix Because either triangle of A can be obtained from the other, you only need to

Storage provide one triangle of A, either the upper or the lower triangle. Compared to storing the entire matrix, you save memory by supplying that triangle stored column-by-column in packed form in a 1-dimensional array.

The following examples illustrate the packed storage of symmetric or

Hermitian matrices.

Upper triangular storage

If the upper triangle of A is

11 12 13 14

22 23 24

33 34

44

then A is packed column-by-column into an array ap as follows:

k

1

2

3

4

5

6

7

8

9

10

ap(k)

11

12

22

13

23

33

14

24

34

44

 

 

 

 

 

 

 

 

 

 

 

Upper triangular matrix element aij is stored in array element ap(i+(j⋅(j−1))/2).

Chapter 3 Basic Matrix Operations 249