35 #ifndef TEMPLATE_BLAS_SPMV_HEADER
36 #define TEMPLATE_BLAS_SPMV_HEADER
41 Treal *ap,
const Treal *x,
const integer *incx,
const Treal *beta,
50 integer kk, ix, iy, jx, jy, kx, ky;
127 }
else if (*incx == 0) {
129 }
else if (*incy == 0) {
137 if (*n == 0 || ( *alpha == 0. && *beta == 1. ) ) {
144 kx = 1 - (*n - 1) * *incx;
149 ky = 1 - (*n - 1) * *incy;
158 for (i__ = 1; i__ <= i__1; ++i__) {
164 for (i__ = 1; i__ <= i__1; ++i__) {
165 y[i__] = *beta * y[i__];
173 for (i__ = 1; i__ <= i__1; ++i__) {
180 for (i__ = 1; i__ <= i__1; ++i__) {
181 y[iy] = *beta * y[iy];
194 if (*incx == 1 && *incy == 1) {
196 for (j = 1; j <= i__1; ++j) {
197 temp1 = *alpha * x[j];
201 for (i__ = 1; i__ <= i__2; ++i__) {
202 y[i__] += temp1 * ap[k];
203 temp2 += ap[k] * x[i__];
207 y[j] = y[j] + temp1 * ap[kk + j - 1] + *alpha * temp2;
215 for (j = 1; j <= i__1; ++j) {
216 temp1 = *alpha * x[jx];
221 for (k = kk; k <= i__2; ++k) {
222 y[iy] += temp1 * ap[k];
223 temp2 += ap[k] * x[ix];
228 y[jy] = y[jy] + temp1 * ap[kk + j - 1] + *alpha * temp2;
237 if (*incx == 1 && *incy == 1) {
239 for (j = 1; j <= i__1; ++j) {
240 temp1 = *alpha * x[j];
242 y[j] += temp1 * ap[kk];
245 for (i__ = j + 1; i__ <= i__2; ++i__) {
246 y[i__] += temp1 * ap[k];
247 temp2 += ap[k] * x[i__];
251 y[j] += *alpha * temp2;
259 for (j = 1; j <= i__1; ++j) {
260 temp1 = *alpha * x[jx];
262 y[jy] += temp1 * ap[kk];
266 for (k = kk + 1; k <= i__2; ++k) {
269 y[iy] += temp1 * ap[k];
270 temp2 += ap[k] * x[ix];
273 y[jy] += *alpha * temp2;