DMATVEC_GENR (job, a, ia, ja, nz, w, x, y, n)
job integer*4 On entry, defines the operation to be performed: job = 0 : y = A * x job = 1 : y = transp(A) * x job = 2 : y = w - A * x job = 3 : y = w - transp(A) * x On exit, job is unchanged. a real*8 On entry, a one-dimensional array of length at least nz containing the nonzero elements of the matrix A. On exit, a is unchanged. ia integer*4 On entry, a one-dimensional array of length at least n+1, containing the starting indices of each row in arrays JA and A. On exit, ia is unchanged. ja integer*4 On entry, a one dimensional array of length at least nz, containing the column values of each nonzero element of the matrix A, stored using the general storage by rows scheme. On exit, ja is unchanged. nz integer*4 On entry, the number of nonzero elements stored in array A. On exit, nz is unchanged. w real*8 On entry, a one-dimensional array of length at least n containing the vector w when job = 2 or 3. The elements are accessed with unit increment. When job = 0 or 1, array W is not needed so w can be a dummy parameter. On exit, w is unchanged. x real*8 On entry, a one-dimensional array of length at least n, containing the elements of vector x, accessed with unit increment. On exit, x is unchanged. y real*8 On entry, a one-dimensional array of length at least n. On exit, array Y is overwritten by the output vector y. The elements of array Y are accessed with unit increment. n integer*4 On entry, the order of the matrix A. On exit, n is unchanged.
DMATVEC_GENR obtains the matrix-vector product for a sparse matrix stored using the general storage by rows scheme. Depending on the value of the input parameter job, either the matrix or its transpose is used in the operation. This routine is available in both serial and parallel versions. The routine names and parameter list are identical for both versions. For information about linking to the serial or to the parallel library, refer to the CXML Reference Manual.