19#include "fasp_functs.h"
42 for (i = 0; i < n2; i++) a[i] *= alpha;
65 for (i = 0; i < n2; i++) b[i] = alpha * a[i];
96 for (i = 0; i < n2; i++) c[i] = alpha * a[i] + beta * b[i];
115 const REAL b0 = b[0], b1 = b[1];
117 c[0] = a[0] * b0 + a[1] * b1;
118 c[1] = a[2] * b0 + a[3] * b1;
135 const REAL b0 = b[0], b1 = b[1], b2 = b[2];
137 c[0] = a[0] * b0 + a[1] * b1 + a[2] * b2;
138 c[1] = a[3] * b0 + a[4] * b1 + a[5] * b2;
139 c[2] = a[6] * b0 + a[7] * b1 + a[8] * b2;
156 const REAL b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
158 c[0] = a[0] * b0 + a[1] * b1 + a[2] * b2 + a[3] * b3;
159 c[1] = a[4] * b0 + a[5] * b1 + a[6] * b2 + a[7] * b3;
160 c[2] = a[8] * b0 + a[9] * b1 + a[10] * b2 + a[11] * b3;
161 c[3] = a[12] * b0 + a[13] * b1 + a[14] * b2 + a[15] * b3;
178 const REAL b0 = b[0], b1 = b[1], b2 = b[2];
179 const REAL b3 = b[3], b4 = b[4];
181 c[0] = a[0] * b0 + a[1] * b1 + a[2] * b2 + a[3] * b3 + a[4] * b4;
182 c[1] = a[5] * b0 + a[6] * b1 + a[7] * b2 + a[8] * b3 + a[9] * b4;
183 c[2] = a[10] * b0 + a[11] * b1 + a[12] * b2 + a[13] * b3 + a[14] * b4;
184 c[3] = a[15] * b0 + a[16] * b1 + a[17] * b2 + a[18] * b3 + a[19] * b4;
185 c[4] = a[20] * b0 + a[21] * b1 + a[22] * b2 + a[23] * b3 + a[24] * b4;
202 const REAL b0 = b[0], b1 = b[1], b2 = b[2];
203 const REAL b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6];
205 c[0] = a[0] * b0 + a[1] * b1 + a[2] * b2 + a[3] * b3 + a[4] * b4 + a[5] * b5 +
207 c[1] = a[7] * b0 + a[8] * b1 + a[9] * b2 + a[10] * b3 + a[11] * b4 + a[12] * b5 +
209 c[2] = a[14] * b0 + a[15] * b1 + a[16] * b2 + a[17] * b3 + a[18] * b4 + a[19] * b5 +
211 c[3] = a[21] * b0 + a[22] * b1 + a[23] * b2 + a[24] * b3 + a[25] * b4 + a[26] * b5 +
213 c[4] = a[28] * b0 + a[29] * b1 + a[30] * b2 + a[31] * b3 + a[32] * b4 + a[33] * b5 +
215 c[5] = a[35] * b0 + a[36] * b1 + a[37] * b2 + a[38] * b3 + a[39] * b4 + a[40] * b5 +
217 c[6] = a[42] * b0 + a[43] * b1 + a[44] * b2 + a[45] * b3 + a[46] * b4 + a[47] * b5 +
266 for (i = 0; i < n; ++i, in += n) {
268 for (j = 0; j < n; ++j) temp += a[in + j] * b[j];
291 const REAL a0 = a[0], a1 = a[1];
292 const REAL a2 = a[2], a3 = a[3];
294 const REAL b0 = b[0], b1 = b[1];
295 const REAL b2 = b[2], b3 = b[3];
297 c[0] = a0 * b0 + a1 * b2;
298 c[1] = a0 * b1 + a1 * b3;
299 c[2] = a2 * b0 + a3 * b2;
300 c[3] = a2 * b1 + a3 * b3;
317 const REAL a0 = a[0], a1 = a[1], a2 = a[2];
318 const REAL a3 = a[3], a4 = a[4], a5 = a[5];
319 const REAL a6 = a[6], a7 = a[7], a8 = a[8];
321 const REAL b0 = b[0], b1 = b[1], b2 = b[2];
322 const REAL b3 = b[3], b4 = b[4], b5 = b[5];
323 const REAL b6 = b[6], b7 = b[7], b8 = b[8];
325 c[0] = a0 * b0 + a1 * b3 + a2 * b6;
326 c[1] = a0 * b1 + a1 * b4 + a2 * b7;
327 c[2] = a0 * b2 + a1 * b5 + a2 * b8;
329 c[3] = a3 * b0 + a4 * b3 + a5 * b6;
330 c[4] = a3 * b1 + a4 * b4 + a5 * b7;
331 c[5] = a3 * b2 + a4 * b5 + a5 * b8;
333 c[6] = a6 * b0 + a7 * b3 + a8 * b6;
334 c[7] = a6 * b1 + a7 * b4 + a8 * b7;
335 c[8] = a6 * b2 + a7 * b5 + a8 * b8;
352 const REAL a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];
353 const REAL a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];
354 const REAL a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];
355 const REAL a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];
357 const REAL b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
358 const REAL b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];
359 const REAL b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];
360 const REAL b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
362 c[0] = a0 * b0 + a1 * b4 + a2 * b8 + a3 * b12;
363 c[1] = a0 * b1 + a1 * b5 + a2 * b9 + a3 * b13;
364 c[2] = a0 * b2 + a1 * b6 + a2 * b10 + a3 * b14;
365 c[3] = a0 * b3 + a1 * b7 + a2 * b11 + a3 * b15;
367 c[4] = a4 * b0 + a5 * b4 + a6 * b8 + a7 * b12;
368 c[5] = a4 * b1 + a5 * b5 + a6 * b9 + a7 * b13;
369 c[6] = a4 * b2 + a5 * b6 + a6 * b10 + a7 * b14;
370 c[7] = a4 * b3 + a5 * b7 + a6 * b11 + a7 * b15;
372 c[8] = a8 * b0 + a9 * b4 + a10 * b8 + a11 * b12;
373 c[9] = a8 * b1 + a9 * b5 + a10 * b9 + a11 * b13;
374 c[10] = a8 * b2 + a9 * b6 + a10 * b10 + a11 * b14;
375 c[11] = a8 * b3 + a9 * b7 + a10 * b11 + a11 * b15;
377 c[12] = a12 * b0 + a13 * b4 + a14 * b8 + a15 * b12;
378 c[13] = a12 * b1 + a13 * b5 + a14 * b9 + a15 * b13;
379 c[14] = a12 * b2 + a13 * b6 + a14 * b10 + a15 * b14;
380 c[15] = a12 * b3 + a13 * b7 + a14 * b11 + a15 * b15;
397 const REAL a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4];
398 const REAL a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8], a9 = a[9];
399 const REAL a10 = a[10], a11 = a[11], a12 = a[12], a13 = a[13], a14 = a[14];
400 const REAL a15 = a[15], a16 = a[16], a17 = a[17], a18 = a[18], a19 = a[19];
401 const REAL a20 = a[20], a21 = a[21], a22 = a[22], a23 = a[23], a24 = a[24];
403 const REAL b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4];
404 const REAL b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9];
405 const REAL b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14];
406 const REAL b15 = b[15], b16 = b[16], b17 = b[17], b18 = b[18], b19 = b[19];
407 const REAL b20 = b[20], b21 = b[21], b22 = b[22], b23 = b[23], b24 = b[24];
409 c[0] = a0 * b0 + a1 * b5 + a2 * b10 + a3 * b15 + a4 * b20;
410 c[1] = a0 * b1 + a1 * b6 + a2 * b11 + a3 * b16 + a4 * b21;
411 c[2] = a0 * b2 + a1 * b7 + a2 * b12 + a3 * b17 + a4 * b22;
412 c[3] = a0 * b3 + a1 * b8 + a2 * b13 + a3 * b18 + a4 * b23;
413 c[4] = a0 * b4 + a1 * b9 + a2 * b14 + a3 * b19 + a4 * b24;
415 c[5] = a5 * b0 + a6 * b5 + a7 * b10 + a8 * b15 + a9 * b20;
416 c[6] = a5 * b1 + a6 * b6 + a7 * b11 + a8 * b16 + a9 * b21;
417 c[7] = a5 * b2 + a6 * b7 + a7 * b12 + a8 * b17 + a9 * b22;
418 c[8] = a5 * b3 + a6 * b8 + a7 * b13 + a8 * b18 + a9 * b23;
419 c[9] = a5 * b4 + a6 * b9 + a7 * b14 + a8 * b19 + a9 * b24;
421 c[10] = a10 * b0 + a11 * b5 + a12 * b10 + a13 * b15 + a14 * b20;
422 c[11] = a10 * b1 + a11 * b6 + a12 * b11 + a13 * b16 + a14 * b21;
423 c[12] = a10 * b2 + a11 * b7 + a12 * b12 + a13 * b17 + a14 * b22;
424 c[13] = a10 * b3 + a11 * b8 + a12 * b13 + a13 * b18 + a14 * b23;
425 c[14] = a10 * b4 + a11 * b9 + a12 * b14 + a13 * b19 + a14 * b24;
427 c[15] = a15 * b0 + a16 * b5 + a17 * b10 + a18 * b15 + a19 * b20;
428 c[16] = a15 * b1 + a16 * b6 + a17 * b11 + a18 * b16 + a19 * b21;
429 c[17] = a15 * b2 + a16 * b7 + a17 * b12 + a18 * b17 + a19 * b22;
430 c[18] = a15 * b3 + a16 * b8 + a17 * b13 + a18 * b18 + a19 * b23;
431 c[19] = a15 * b4 + a16 * b9 + a17 * b14 + a18 * b19 + a19 * b24;
433 c[20] = a20 * b0 + a21 * b5 + a22 * b10 + a23 * b15 + a24 * b20;
434 c[21] = a20 * b1 + a21 * b6 + a22 * b11 + a23 * b16 + a24 * b21;
435 c[22] = a20 * b2 + a21 * b7 + a22 * b12 + a23 * b17 + a24 * b22;
436 c[23] = a20 * b3 + a21 * b8 + a22 * b13 + a23 * b18 + a24 * b23;
437 c[24] = a20 * b4 + a21 * b9 + a22 * b14 + a23 * b19 + a24 * b24;
454 const REAL a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],
456 const REAL a7 = a[7], a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11], a12 = a[12],
458 const REAL a14 = a[14], a15 = a[15], a16 = a[16], a17 = a[17], a18 = a[18],
459 a19 = a[19], a20 = a[20];
460 const REAL a21 = a[21], a22 = a[22], a23 = a[23], a24 = a[24], a25 = a[25],
461 a26 = a[26], a27 = a[27];
462 const REAL a28 = a[28], a29 = a[29], a30 = a[30], a31 = a[31], a32 = a[32],
463 a33 = a[33], a34 = a[34];
464 const REAL a35 = a[35], a36 = a[36], a37 = a[37], a38 = a[38], a39 = a[39],
465 a40 = a[40], a41 = a[41];
466 const REAL a42 = a[42], a43 = a[43], a44 = a[44], a45 = a[45], a46 = a[46],
467 a47 = a[47], a48 = a[48];
469 const REAL b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5],
471 const REAL b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12],
473 const REAL b14 = b[14], b15 = b[15], b16 = b[16], b17 = b[17], b18 = b[18],
474 b19 = b[19], b20 = b[20];
475 const REAL b21 = b[21], b22 = b[22], b23 = b[23], b24 = b[24], b25 = b[25],
476 b26 = b[26], b27 = b[27];
477 const REAL b28 = b[28], b29 = b[29], b30 = b[30], b31 = b[31], b32 = b[32],
478 b33 = b[33], b34 = b[34];
479 const REAL b35 = b[35], b36 = b[36], b37 = b[37], b38 = b[38], b39 = b[39],
480 b40 = b[40], b41 = b[41];
481 const REAL b42 = b[42], b43 = b[43], b44 = b[44], b45 = b[45], b46 = b[46],
482 b47 = b[47], b48 = b[48];
484 c[0] = a0 * b0 + a1 * b7 + a2 * b14 + a3 * b21 + a4 * b28 + a5 * b35 + a6 * b42;
485 c[1] = a0 * b1 + a1 * b8 + a2 * b15 + a3 * b22 + a4 * b29 + a5 * b36 + a6 * b43;
486 c[2] = a0 * b2 + a1 * b9 + a2 * b16 + a3 * b23 + a4 * b30 + a5 * b37 + a6 * b44;
487 c[3] = a0 * b3 + a1 * b10 + a2 * b17 + a3 * b24 + a4 * b31 + a5 * b38 + a6 * b45;
488 c[4] = a0 * b4 + a1 * b11 + a2 * b18 + a3 * b25 + a4 * b32 + a5 * b39 + a6 * b46;
489 c[5] = a0 * b5 + a1 * b12 + a2 * b19 + a3 * b26 + a4 * b33 + a5 * b40 + a6 * b47;
490 c[6] = a0 * b6 + a1 * b13 + a2 * b20 + a3 * b27 + a4 * b34 + a5 * b41 + a6 * b48;
492 c[7] = a7 * b0 + a8 * b7 + a9 * b14 + a10 * b21 + a11 * b28 + a12 * b35 + a13 * b42;
493 c[8] = a7 * b1 + a8 * b8 + a9 * b15 + a10 * b22 + a11 * b29 + a12 * b36 + a13 * b43;
494 c[9] = a7 * b2 + a8 * b9 + a9 * b16 + a10 * b23 + a11 * b30 + a12 * b37 + a13 * b44;
496 a7 * b3 + a8 * b10 + a9 * b17 + a10 * b24 + a11 * b31 + a12 * b38 + a13 * b45;
498 a7 * b4 + a8 * b11 + a9 * b18 + a10 * b25 + a11 * b32 + a12 * b39 + a13 * b46;
500 a7 * b5 + a8 * b12 + a9 * b19 + a10 * b26 + a11 * b33 + a12 * b40 + a13 * b47;
502 a7 * b6 + a8 * b13 + a9 * b20 + a10 * b27 + a11 * b34 + a12 * b41 + a13 * b48;
505 a14 * b0 + a15 * b7 + a16 * b14 + a17 * b21 + a18 * b28 + a19 * b35 + a20 * b42;
507 a14 * b1 + a15 * b8 + a16 * b15 + a17 * b22 + a18 * b29 + a19 * b36 + a20 * b43;
509 a14 * b2 + a15 * b9 + a16 * b16 + a17 * b23 + a18 * b30 + a19 * b37 + a20 * b44;
510 c[17] = a14 * b3 + a15 * b10 + a16 * b17 + a17 * b24 + a18 * b31 + a19 * b38 +
512 c[18] = a14 * b4 + a15 * b11 + a16 * b18 + a17 * b25 + a18 * b32 + a19 * b39 +
514 c[19] = a14 * b5 + a15 * b12 + a16 * b19 + a17 * b26 + a18 * b33 + a19 * b40 +
516 c[20] = a14 * b6 + a15 * b13 + a16 * b20 + a17 * b27 + a18 * b34 + a19 * b41 +
520 a21 * b0 + a22 * b7 + a23 * b14 + a24 * b21 + a25 * b28 + a26 * b35 + a27 * b42;
522 a21 * b1 + a22 * b8 + a23 * b15 + a24 * b22 + a25 * b29 + a26 * b36 + a27 * b43;
524 a21 * b2 + a22 * b9 + a23 * b16 + a24 * b23 + a25 * b30 + a26 * b37 + a27 * b44;
525 c[24] = a21 * b3 + a22 * b10 + a23 * b17 + a24 * b24 + a25 * b31 + a26 * b38 +
527 c[25] = a21 * b4 + a22 * b11 + a23 * b18 + a24 * b25 + a25 * b32 + a26 * b39 +
529 c[26] = a21 * b5 + a22 * b12 + a23 * b19 + a24 * b26 + a25 * b33 + a26 * b40 +
531 c[27] = a21 * b6 + a22 * b13 + a23 * b20 + a24 * b27 + a25 * b34 + a26 * b41 +
535 a28 * b0 + a29 * b7 + a30 * b14 + a31 * b21 + a32 * b28 + a33 * b35 + a34 * b42;
537 a28 * b1 + a29 * b8 + a30 * b15 + a31 * b22 + a32 * b29 + a33 * b36 + a34 * b43;
539 a28 * b2 + a29 * b9 + a30 * b16 + a31 * b23 + a32 * b30 + a33 * b37 + a34 * b44;
540 c[31] = a28 * b3 + a29 * b10 + a30 * b17 + a31 * b24 + a32 * b31 + a33 * b38 +
542 c[32] = a28 * b4 + a29 * b11 + a30 * b18 + a31 * b25 + a32 * b32 + a33 * b39 +
544 c[33] = a28 * b5 + a29 * b12 + a30 * b19 + a31 * b26 + a32 * b33 + a33 * b40 +
546 c[34] = a28 * b6 + a29 * b13 + a30 * b20 + a31 * b27 + a32 * b34 + a33 * b41 +
550 a35 * b0 + a36 * b7 + a37 * b14 + a38 * b21 + a39 * b28 + a40 * b35 + a41 * b42;
552 a35 * b1 + a36 * b8 + a37 * b15 + a38 * b22 + a39 * b29 + a40 * b36 + a41 * b43;
554 a35 * b2 + a36 * b9 + a37 * b16 + a38 * b23 + a39 * b30 + a40 * b37 + a41 * b44;
555 c[38] = a35 * b3 + a36 * b10 + a37 * b17 + a38 * b24 + a39 * b31 + a40 * b38 +
557 c[39] = a35 * b4 + a36 * b11 + a37 * b18 + a38 * b25 + a39 * b32 + a40 * b39 +
559 c[40] = a35 * b5 + a36 * b12 + a37 * b19 + a38 * b26 + a39 * b33 + a40 * b40 +
561 c[41] = a35 * b6 + a36 * b13 + a37 * b20 + a38 * b27 + a39 * b34 + a40 * b41 +
565 a42 * b0 + a43 * b7 + a44 * b14 + a45 * b21 + a46 * b28 + a47 * b35 + a48 * b42;
567 a42 * b1 + a43 * b8 + a44 * b15 + a45 * b22 + a46 * b29 + a47 * b36 + a48 * b43;
569 a42 * b2 + a43 * b9 + a44 * b16 + a45 * b23 + a46 * b30 + a47 * b37 + a48 * b44;
570 c[45] = a42 * b3 + a43 * b10 + a44 * b17 + a45 * b24 + a46 * b31 + a47 * b38 +
572 c[46] = a42 * b4 + a43 * b11 + a44 * b18 + a45 * b25 + a46 * b32 + a47 * b39 +
574 c[47] = a42 * b5 + a43 * b12 + a44 * b19 + a45 * b26 + a46 * b33 + a47 * b40 +
576 c[48] = a42 * b6 + a43 * b13 + a44 * b20 + a45 * b27 + a46 * b34 + a47 * b41 +
622 const INT n2 = n * n;
626 for (i = 0; i < n2; i += n) {
627 for (j = 0; j < n; ++j) {
629 for (k = 0; k < n; ++k) temp += a[i + k] * b[k * n + j];
653 const REAL x0 = x[0], x1 = x[1];
655 y[0] += A[0] * x0 + A[1] * x1;
656 y[1] += A[2] * x0 + A[3] * x1;
675 const REAL x0 = x[0], x1 = x[1], x2 = x[2];
677 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2;
678 y[1] += A[3] * x0 + A[4] * x1 + A[5] * x2;
679 y[2] += A[6] * x0 + A[7] * x1 + A[8] * x2;
697 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
699 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3;
700 y[1] += A[4] * x0 + A[5] * x1 + A[6] * x2 + A[7] * x3;
701 y[2] += A[8] * x0 + A[9] * x1 + A[10] * x2 + A[11] * x3;
702 y[3] += A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3;
720 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4];
722 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4;
723 y[1] += A[5] * x0 + A[6] * x1 + A[7] * x2 + A[8] * x3 + A[9] * x4;
724 y[2] += A[10] * x0 + A[11] * x1 + A[12] * x2 + A[13] * x3 + A[14] * x4;
725 y[3] += A[15] * x0 + A[16] * x1 + A[17] * x2 + A[18] * x3 + A[19] * x4;
726 y[4] += A[20] * x0 + A[21] * x1 + A[22] * x2 + A[23] * x3 + A[24] * x4;
744 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
745 const REAL x4 = x[4], x5 = x[5], x6 = x[6];
747 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 + A[5] * x5 +
749 y[1] += A[7] * x0 + A[8] * x1 + A[9] * x2 + A[10] * x3 + A[11] * x4 + A[12] * x5 +
751 y[2] += A[14] * x0 + A[15] * x1 + A[16] * x2 + A[17] * x3 + A[18] * x4 +
752 A[19] * x5 + A[20] * x6;
753 y[3] += A[21] * x0 + A[22] * x1 + A[23] * x2 + A[24] * x3 + A[25] * x4 +
754 A[26] * x5 + A[27] * x6;
755 y[4] += A[28] * x0 + A[29] * x1 + A[30] * x2 + A[31] * x3 + A[32] * x4 +
756 A[33] * x5 + A[34] * x6;
757 y[5] += A[35] * x0 + A[36] * x1 + A[37] * x2 + A[38] * x3 + A[39] * x4 +
758 A[40] * x5 + A[41] * x6;
759 y[6] += A[42] * x0 + A[43] * x1 + A[44] * x2 + A[45] * x3 + A[46] * x4 +
760 A[47] * x5 + A[48] * x6;
789 const REAL x0 = x[0], x1 = x[1];
790 y[0] += A[0] * x0 + A[1] * x1;
791 y[1] += A[2] * x0 + A[3] * x1;
796 const REAL x0 = x[0], x1 = x[1], x2 = x[2];
797 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2;
798 y[1] += A[3] * x0 + A[4] * x1 + A[5] * x2;
799 y[2] += A[6] * x0 + A[7] * x1 + A[8] * x2;
804 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
805 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3;
806 y[1] += A[4] * x0 + A[5] * x1 + A[6] * x2 + A[7] * x3;
807 y[2] += A[8] * x0 + A[9] * x1 + A[10] * x2 + A[11] * x3;
808 y[3] += A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3;
813 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4];
814 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4;
815 y[1] += A[5] * x0 + A[6] * x1 + A[7] * x2 + A[8] * x3 + A[9] * x4;
816 y[2] += A[10] * x0 + A[11] * x1 + A[12] * x2 + A[13] * x3 + A[14] * x4;
817 y[3] += A[15] * x0 + A[16] * x1 + A[17] * x2 + A[18] * x3 + A[19] * x4;
818 y[4] += A[20] * x0 + A[21] * x1 + A[22] * x2 + A[23] * x3 + A[24] * x4;
823 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
824 const REAL x4 = x[4], x5 = x[5];
825 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 +
827 y[1] += A[6] * x0 + A[7] * x1 + A[8] * x2 + A[9] * x3 + A[10] * x4 +
829 y[2] += A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3 + A[16] * x4 +
831 y[3] += A[18] * x0 + A[19] * x1 + A[20] * x2 + A[21] * x3 + A[22] * x4 +
833 y[4] += A[24] * x0 + A[25] * x1 + A[26] * x2 + A[27] * x3 + A[28] * x4 +
835 y[5] += A[30] * x0 + A[31] * x1 + A[32] * x2 + A[33] * x3 + A[34] * x4 +
841 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
842 const REAL x4 = x[4], x5 = x[5], x6 = x[6];
843 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 +
844 A[5] * x5 + A[6] * x6;
845 y[1] += A[7] * x0 + A[8] * x1 + A[9] * x2 + A[10] * x3 + A[11] * x4 +
846 A[12] * x5 + A[13] * x6;
847 y[2] += A[14] * x0 + A[15] * x1 + A[16] * x2 + A[17] * x3 + A[18] * x4 +
848 A[19] * x5 + A[20] * x6;
849 y[3] += A[21] * x0 + A[22] * x1 + A[23] * x2 + A[24] * x3 + A[25] * x4 +
850 A[26] * x5 + A[27] * x6;
851 y[4] += A[28] * x0 + A[29] * x1 + A[30] * x2 + A[31] * x3 + A[32] * x4 +
852 A[33] * x5 + A[34] * x6;
853 y[5] += A[35] * x0 + A[36] * x1 + A[37] * x2 + A[38] * x3 + A[39] * x4 +
854 A[40] * x5 + A[41] * x6;
855 y[6] += A[42] * x0 + A[43] * x1 + A[44] * x2 + A[45] * x3 + A[46] * x4 +
856 A[47] * x5 + A[48] * x6;
863 for (k = i = 0; i < n; i++, k += n) {
864 for (j = 0; j < n; j++) {
865 y[i] += A[k + j] * x[j];
891 const REAL x0 = x[0], x1 = x[1];
893 y[0] -= A[0] * x0 + A[1] * x1;
894 y[1] -= A[2] * x0 + A[3] * x1;
915 const REAL x0 = x[0], x1 = x[1], x2 = x[2];
917 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2;
918 y[1] -= A[3] * x0 + A[4] * x1 + A[5] * x2;
919 y[2] -= A[6] * x0 + A[7] * x1 + A[8] * x2;
940 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
942 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3;
943 y[1] -= A[4] * x0 + A[5] * x1 + A[6] * x2 + A[7] * x3;
944 y[2] -= A[8] * x0 + A[9] * x1 + A[10] * x2 + A[11] * x3;
945 y[3] -= A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3;
965 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4];
967 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4;
968 y[1] -= A[5] * x0 + A[6] * x1 + A[7] * x2 + A[8] * x3 + A[9] * x4;
969 y[2] -= A[10] * x0 + A[11] * x1 + A[12] * x2 + A[13] * x3 + A[14] * x4;
970 y[3] -= A[15] * x0 + A[16] * x1 + A[17] * x2 + A[18] * x3 + A[19] * x4;
971 y[4] -= A[20] * x0 + A[21] * x1 + A[22] * x2 + A[23] * x3 + A[24] * x4;
992 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
993 const REAL x4 = x[4], x5 = x[5], x6 = x[6];
995 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 + A[5] * x5 +
997 y[1] -= A[7] * x0 + A[8] * x1 + A[9] * x2 + A[10] * x3 + A[11] * x4 + A[12] * x5 +
999 y[2] -= A[14] * x0 + A[15] * x1 + A[16] * x2 + A[17] * x3 + A[18] * x4 +
1000 A[19] * x5 + A[20] * x6;
1001 y[3] -= A[21] * x0 + A[22] * x1 + A[23] * x2 + A[24] * x3 + A[25] * x4 +
1002 A[26] * x5 + A[27] * x6;
1003 y[4] -= A[28] * x0 + A[29] * x1 + A[30] * x2 + A[31] * x3 + A[32] * x4 +
1004 A[33] * x5 + A[34] * x6;
1005 y[5] -= A[35] * x0 + A[36] * x1 + A[37] * x2 + A[38] * x3 + A[39] * x4 +
1006 A[40] * x5 + A[41] * x6;
1007 y[6] -= A[42] * x0 + A[43] * x1 + A[44] * x2 + A[45] * x3 + A[46] * x4 +
1008 A[47] * x5 + A[48] * x6;
1033 y[0] -= A[0] * x[0];
1038 const REAL x0 = x[0], x1 = x[1];
1039 y[0] -= A[0] * x0 + A[1] * x1;
1040 y[1] -= A[2] * x0 + A[3] * x1;
1045 const REAL x0 = x[0], x1 = x[1], x2 = x[2];
1046 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2;
1047 y[1] -= A[3] * x0 + A[4] * x1 + A[5] * x2;
1048 y[2] -= A[6] * x0 + A[7] * x1 + A[8] * x2;
1053 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
1054 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3;
1055 y[1] -= A[4] * x0 + A[5] * x1 + A[6] * x2 + A[7] * x3;
1056 y[2] -= A[8] * x0 + A[9] * x1 + A[10] * x2 + A[11] * x3;
1057 y[3] -= A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3;
1062 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4];
1063 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4;
1064 y[1] -= A[5] * x0 + A[6] * x1 + A[7] * x2 + A[8] * x3 + A[9] * x4;
1065 y[2] -= A[10] * x0 + A[11] * x1 + A[12] * x2 + A[13] * x3 + A[14] * x4;
1066 y[3] -= A[15] * x0 + A[16] * x1 + A[17] * x2 + A[18] * x3 + A[19] * x4;
1067 y[4] -= A[20] * x0 + A[21] * x1 + A[22] * x2 + A[23] * x3 + A[24] * x4;
1072 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
1073 const REAL x4 = x[4], x5 = x[5];
1074 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 +
1076 y[1] -= A[6] * x0 + A[7] * x1 + A[8] * x2 + A[9] * x3 + A[10] * x4 +
1078 y[2] -= A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3 + A[16] * x4 +
1080 y[3] -= A[18] * x0 + A[19] * x1 + A[20] * x2 + A[21] * x3 + A[22] * x4 +
1082 y[4] -= A[24] * x0 + A[25] * x1 + A[26] * x2 + A[27] * x3 + A[28] * x4 +
1084 y[5] -= A[30] * x0 + A[31] * x1 + A[32] * x2 + A[33] * x3 + A[34] * x4 +
1090 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
1091 const REAL x4 = x[4], x5 = x[5], x6 = x[6];
1092 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 +
1093 A[5] * x5 + A[6] * x6;
1094 y[1] -= A[7] * x0 + A[8] * x1 + A[9] * x2 + A[10] * x3 + A[11] * x4 +
1095 A[12] * x5 + A[13] * x6;
1096 y[2] -= A[14] * x0 + A[15] * x1 + A[16] * x2 + A[17] * x3 + A[18] * x4 +
1097 A[19] * x5 + A[20] * x6;
1098 y[3] -= A[21] * x0 + A[22] * x1 + A[23] * x2 + A[24] * x3 + A[25] * x4 +
1099 A[26] * x5 + A[27] * x6;
1100 y[4] -= A[28] * x0 + A[29] * x1 + A[30] * x2 + A[31] * x3 + A[32] * x4 +
1101 A[33] * x5 + A[34] * x6;
1102 y[5] -= A[35] * x0 + A[36] * x1 + A[37] * x2 + A[38] * x3 + A[39] * x4 +
1103 A[40] * x5 + A[41] * x6;
1104 y[6] -= A[42] * x0 + A[43] * x1 + A[44] * x2 + A[45] * x3 + A[46] * x4 +
1105 A[47] * x5 + A[48] * x6;
1112 for (k = i = 0; i < n; i++, k += n) {
1113 for (j = 0; j < n; j++) {
1114 y[i] -= A[k + j] * x[j];
1151 for (i = 0; i < n; i++) y[i] *= beta;
1158 for (i = 0; i < n; i++) y[i] *= tmp;
1162 for (k = i = 0; i < n; i++, k += n) {
1163 for (j = 0; j < n; j++) {
1164 y[i] += A[k + j] * x[j];
1170 for (i = 0; i < n; i++) y[i] *= alpha;
void fasp_blas_smat_ypAx(const REAL *A, const REAL *x, REAL *y, const INT n)
Compute y := y + Ax, where 'A' is a n*n dense matrix.
void fasp_blas_smat_axm(REAL *a, const INT n, const REAL alpha)
Compute a = alpha*a (in place)
void fasp_blas_smat_mul_nc4(const REAL *a, const REAL *b, REAL *c)
Compute the matrix product of two 4*4 matrices a and b, stored in c.
void fasp_blas_smat_ypAx_nc3(const REAL *A, const REAL *x, REAL *y)
Compute y := y + Ax, where 'A' is a 3*3 dense matrix.
void fasp_blas_smat_ypAx_nc2(const REAL *A, const REAL *x, REAL *y)
Compute y := y + Ax, where 'A' is a 2*2 dense matrix.
void fasp_blas_smat_mxv_nc7(const REAL *a, const REAL *b, REAL *c)
Compute the product of a 7*7 matrix a and a array b, stored in c.
void fasp_blas_smat_mul(const REAL *a, const REAL *b, REAL *c, const INT n)
Compute the matrix product of two small full matrices a and b, stored in c.
void fasp_blas_smat_mxv_nc5(const REAL *a, const REAL *b, REAL *c)
Compute the product of a 5*5 matrix a and a array b, stored in c.
void fasp_blas_smat_ymAx_nc3(const REAL *A, const REAL *x, REAL *y)
Compute y := y - Ax, where 'A' is a 3*3 dense matrix.
void fasp_blas_smat_mxv_nc4(const REAL *a, const REAL *b, REAL *c)
Compute the product of a 4*4 matrix a and a array b, stored in c.
void fasp_blas_smat_ymAx_nc7(const REAL *A, const REAL *x, REAL *y)
Compute y := y - Ax, where 'A' is a 7*7 dense matrix.
void fasp_blas_smat_aAxpby(const REAL alpha, const REAL *A, const REAL *x, const REAL beta, REAL *y, const INT n)
Compute y:=alpha*A*x + beta*y.
void fasp_blas_smat_mxv(const REAL *a, const REAL *b, REAL *c, const INT n)
Compute the product of a small full matrix a and a array b, stored in c.
void fasp_blas_smat_add(const REAL *a, const REAL *b, const INT n, const REAL alpha, const REAL beta, REAL *c)
Compute c = alpha*a + beta*b.
void fasp_blas_smat_ymAx(const REAL *A, const REAL *x, REAL *y, const INT n)
Compute y := y - Ax, where 'A' is a n*n dense matrix.
void fasp_blas_smat_mul_nc2(const REAL *a, const REAL *b, REAL *c)
Compute the matrix product of two 2* matrices a and b, stored in c.
void fasp_blas_smat_ypAx_nc4(const REAL *A, const REAL *x, REAL *y)
Compute y := y + Ax, where 'A' is a 4*4 dense matrix.
void fasp_blas_smat_mul_nc3(const REAL *a, const REAL *b, REAL *c)
Compute the matrix product of two 3*3 matrices a and b, stored in c.
void fasp_blas_smat_axm1(REAL *a, const INT n, const REAL alpha, REAL *b)
Compute b = alpha*a (in place)
void fasp_blas_smat_mul_nc7(const REAL *a, const REAL *b, REAL *c)
Compute the matrix product of two 7*7 matrices a and b, stored in c.
void fasp_blas_smat_ypAx_nc5(const REAL *A, const REAL *x, REAL *y)
Compute y := y + Ax, where 'A' is a 5*5 dense matrix.
void fasp_blas_smat_mxv_nc3(const REAL *a, const REAL *b, REAL *c)
Compute the product of a 3*3 matrix a and a array b, stored in c.
void fasp_blas_smat_ypAx_nc7(const REAL *A, const REAL *x, REAL *y)
Compute y := y + Ax, where 'A' is a 7*7 dense matrix.
void fasp_blas_smat_mxv_nc2(const REAL *a, const REAL *b, REAL *c)
Compute the product of a 2*2 matrix a and a array b, stored in c.
void fasp_blas_smat_ymAx_nc4(const REAL *A, const REAL *x, REAL *y)
Compute y := y - Ax, where 'A' is a 4*4 dense matrix.
void fasp_blas_smat_mul_nc5(const REAL *a, const REAL *b, REAL *c)
Compute the matrix product of two 5*5 matrices a and b, stored in c.
void fasp_blas_smat_ymAx_nc2(const REAL *A, const REAL *x, REAL *y)
Compute y := y - Ax, where 'A' is a 2*2 dense matrix.
void fasp_blas_smat_ymAx_nc5(const REAL *A, const REAL *x, REAL *y)
Compute y := y - Ax, where 'A' is a 5*5 dense matrix.
Main header file for the FASP project.