What you need to know to use these subprograms

pntrb(*) - Integer array of length m such that pntrb(j) points to location in val( ) of the first nonzero element in row j.

pntre(*) - Integer array of length m such that pntre(j)-1points to location in val( ) of the last nonzero element in row j.

The matrix in Table 4-4 could be represented in MSR format as:

Table 4-8 MSR Format Matrix

diag=

11

22

33

44

 

 

 

val=

13

15

21

31

35

41

45

indx=

3

5

1

1

5

1

5

pntrb=

1

3

4

6

 

 

 

pntre=

3

4

6

8

 

 

 

DIA- Sparse diagonal. Given a sparse m-by-kmatrix A with ndiag nonzero diagonals, the DIA format stores the nonzero diagonals of A. Two arrays are required for the DIA representation:

idiag(*) - Integer array of length ndiag consisting of the corresponding diagonal offsets idiag(i) of the nonzero diagonal of A stored in the column val(:, i). Offsets are represented with respect to the main diagonal, that is, the main diagonal has offset 0, lower triangular diagonals have negative offsets, and upper triangular diagonals have positive offsets.

val( lda,*) - Two dimensional lda-by-ndiagscalar array where lda is greater or equal to min(m, k). Column val( :, i) consists of elements on diagonal idiag(i) of A including any zero element within the diagonal. Since diagonals may have fewer elements than to min(m, k):

a) any diagonal with positive or zero offset d= idiag(i) (the main diagonal or any upper triangular diagonal) is stored starting from position val( :, i);

b) if m is greater or equal to k, any diagonal with negative offset d= idiag(i) (any lower triangular diagonal) is stored starting from position val(-d, i);

c) if m is less than k, any diagonal with negative offset d= idiag(i) is stored starting from position val(t, i) where t=1+max(0, k-m-d).

428HP MLIB User’s Guide