20 bool mnlsame(
const char*,
const char*);
23 int Mndspmv(
const char* uplo,
unsigned int n,
double alpha,
24 const double* ap,
const double*
x,
int incx,
double beta,
25 double*
y,
int incy) {
33 int kk, ix, iy, jx, jy, kx, ky;
147 else if (incx == 0) {
149 }
else if (incy == 0) {
159 if ( ( n == 0) || ( alpha == 0. && beta == 1.) ) {
168 kx = 1 - (n - 1) * incx;
173 ky = 1 - (n - 1) * incy;
185 for (i__ = 1; i__ <= i__1; ++i__) {
191 for (i__ = 1; i__ <= i__1; ++i__) {
192 y[i__] = beta * y[i__];
200 for (i__ = 1; i__ <= i__1; ++i__) {
207 for (i__ = 1; i__ <= i__1; ++i__) {
208 y[iy] = beta * y[iy];
223 if (incx == 1 && incy == 1) {
225 for (j = 1; j <= i__1; ++j) {
226 temp1 = alpha * x[j];
230 for (i__ = 1; i__ <= i__2; ++i__) {
231 y[i__] += temp1 * ap[k];
232 temp2 += ap[k] * x[i__];
236 y[j] = y[j] + temp1 * ap[kk + j - 1] + alpha * temp2;
244 for (j = 1; j <= i__1; ++j) {
245 temp1 = alpha * x[jx];
250 for (k = 0; k <= i__2 - kk; ++k) {
251 y[iy] += temp1 * ap[k + kk];
252 temp2 += ap[k + kk] * x[ix];
257 y[jy] = y[jy] + temp1 * ap[kk + j - 1] + alpha * temp2;
268 if (incx == 1 && incy == 1) {
270 for (j = 1; j <= i__1; ++j) {
271 temp1 = alpha * x[j];
273 y[j] += temp1 * ap[kk];
276 for (i__ = j + 1; i__ <= i__2; ++i__) {
277 y[i__] += temp1 * ap[k];
278 temp2 += ap[k] * x[i__];
282 y[j] += alpha * temp2;
290 for (j = 1; j <= i__1; ++j) {
291 temp1 = alpha * x[jx];
293 y[jy] += temp1 * ap[kk];
297 for (k = kk + 1; k <= i__2; ++k) {
300 y[iy] += temp1 * ap[k];
301 temp2 += ap[k] * x[ix];
304 y[jy] += alpha * temp2;
This namespace contains pre-defined functions to be used in conjuction with TExecutor::Map and TExecu...
double beta(double x, double y)
Calculates the beta function.
int mnxerbla(const char *, int)
bool mnlsame(const char *, const char *)
int Mndspmv(const char *, unsigned int, double, const double *, const double *, int, double, double *, int)