37 #ifndef TEMPLATE_BLAS_SPMV_HEADER
38 #define TEMPLATE_BLAS_SPMV_HEADER
43 Treal *ap,
const Treal *x,
const integer *incx,
const Treal *beta,
52 integer kk, ix, iy, jx, jy, kx, ky;
129 }
else if (*incx == 0) {
131 }
else if (*incy == 0) {
139 if (*n == 0 || ( *alpha == 0. && *beta == 1. ) ) {
146 kx = 1 - (*n - 1) * *incx;
151 ky = 1 - (*n - 1) * *incy;
160 for (i__ = 1; i__ <= i__1; ++i__) {
166 for (i__ = 1; i__ <= i__1; ++i__) {
167 y[i__] = *beta * y[i__];
175 for (i__ = 1; i__ <= i__1; ++i__) {
182 for (i__ = 1; i__ <= i__1; ++i__) {
183 y[iy] = *beta * y[iy];
196 if (*incx == 1 && *incy == 1) {
198 for (j = 1; j <= i__1; ++j) {
199 temp1 = *alpha * x[j];
203 for (i__ = 1; i__ <= i__2; ++i__) {
204 y[i__] += temp1 * ap[k];
205 temp2 += ap[k] * x[i__];
209 y[j] = y[j] + temp1 * ap[kk + j - 1] + *alpha * temp2;
217 for (j = 1; j <= i__1; ++j) {
218 temp1 = *alpha * x[jx];
223 for (k = kk; k <= i__2; ++k) {
224 y[iy] += temp1 * ap[k];
225 temp2 += ap[k] * x[ix];
230 y[jy] = y[jy] + temp1 * ap[kk + j - 1] + *alpha * temp2;
239 if (*incx == 1 && *incy == 1) {
241 for (j = 1; j <= i__1; ++j) {
242 temp1 = *alpha * x[j];
244 y[j] += temp1 * ap[kk];
247 for (i__ = j + 1; i__ <= i__2; ++i__) {
248 y[i__] += temp1 * ap[k];
249 temp2 += ap[k] * x[i__];
253 y[j] += *alpha * temp2;
261 for (j = 1; j <= i__1; ++j) {
262 temp1 = *alpha * x[jx];
264 y[jy] += temp1 * ap[kk];
268 for (k = kk + 1; k <= i__2; ++k) {
271 y[iy] += temp1 * ap[k];
272 temp2 += ap[k] * x[ix];
275 y[jy] += *alpha * temp2;