40 const INT dif = A -> dif;
41 const INT *nz_diff = A -> nz_diff;
42 const INT *rowindex = A -> index;
43 const INT *rowstart = A -> start;
44 const INT *ja = A -> ja;
45 const REAL *a = A -> val;
50 INT firstrow, lastrow;
54 for (len = 0; len < dif; len ++) {
55 firstrow = rowstart[len];
56 lastrow = rowstart[len+1] - 1;
57 rowlen = nz_diff[len];
59 if (lastrow > firstrow ) {
65 for (row = firstrow; row < lastrow; row += 2) {
66 val0 = a[col]*x[ja[col]];
67 val1 = a[col+5]*x[ja[col+5]];
70 val0 += a[col]*x[ja[col]];
71 val1 += a[col+5]*x[ja[col+5]];
74 val0 += a[col]*x[ja[col]];
75 val1 += a[col+5]*x[ja[col+5]];
78 val0 += a[col]*x[ja[col]];
79 val1 += a[col+5]*x[ja[col+5]];
82 val0 += a[col]*x[ja[col]];
83 val1 += a[col+5]*x[ja[col+5]];
86 y[rowindex[row]] = val0;
87 y[rowindex[row+1]] = val1;
97 for (row = firstrow; row < lastrow; row += 2) {
100 for (i = 0; i < rowlen; i ++) {
101 val0 += a[col]*x[ja[col]];
102 val1 += a[col+rowlen]*x[ja[col+rowlen]];
105 y[rowindex[row]] = val0;
106 y[rowindex[row+1]] = val1;
118 for (row = firstrow; row <= lastrow; row ++) {
120 for (i = 0; i < rowlen; i ++) {
121 val0 += a[col]*x[ja[col]];
124 y[rowindex[row]] = val0;
void fasp_blas_dcsrl_mxv(const dCSRLmat *A, const REAL *x, REAL *y)
Compute y = A*x for a sparse matrix in CSRL format.
Main header file for the FASP project.
Sparse matrix of REAL type in CSRL format.