Fast Auxiliary Space Preconditioning 2.7.7 Aug/28/2022
Loading...
Searching...
No Matches
BlaSmallMat.c
Go to the documentation of this file.
1
18#include "fasp.h"
19#include "fasp_functs.h"
20
21/*---------------------------------*/
22/*-- Public Functions --*/
23/*---------------------------------*/
24
37void fasp_blas_smat_axm(REAL* a, const INT n, const REAL alpha)
38{
39 const INT n2 = n * n;
40 INT i;
41
42 for (i = 0; i < n2; i++) a[i] *= alpha;
43
44 return;
45}
46
60void fasp_blas_smat_axm1(REAL* a, const INT n, const REAL alpha, REAL* b)
61{
62 const INT n2 = n * n;
63 INT i;
64
65 for (i = 0; i < n2; i++) b[i] = alpha * a[i];
66
67 return;
68}
69
87 const REAL* b,
88 const INT n,
89 const REAL alpha,
90 const REAL beta,
91 REAL* c)
92{
93 const INT n2 = n * n;
94 INT i;
95
96 for (i = 0; i < n2; i++) c[i] = alpha * a[i] + beta * b[i];
97
98 return;
99}
100
113void fasp_blas_smat_mxv_nc2(const REAL* a, const REAL* b, REAL* c)
114{
115 const REAL b0 = b[0], b1 = b[1];
116
117 c[0] = a[0] * b0 + a[1] * b1;
118 c[1] = a[2] * b0 + a[3] * b1;
119}
120
133void fasp_blas_smat_mxv_nc3(const REAL* a, const REAL* b, REAL* c)
134{
135 const REAL b0 = b[0], b1 = b[1], b2 = b[2];
136
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;
140}
141
154void fasp_blas_smat_mxv_nc4(const REAL* a, const REAL* b, REAL* c)
155{
156 const REAL b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
157
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;
162}
163
176void fasp_blas_smat_mxv_nc5(const REAL* a, const REAL* b, REAL* c)
177{
178 const REAL b0 = b[0], b1 = b[1], b2 = b[2];
179 const REAL b3 = b[3], b4 = b[4];
180
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;
186}
187
200void fasp_blas_smat_mxv_nc7(const REAL* a, const REAL* b, REAL* c)
201{
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];
204
205 c[0] = a[0] * b0 + a[1] * b1 + a[2] * b2 + a[3] * b3 + a[4] * b4 + a[5] * b5 +
206 a[6] * b6;
207 c[1] = a[7] * b0 + a[8] * b1 + a[9] * b2 + a[10] * b3 + a[11] * b4 + a[12] * b5 +
208 a[13] * b6;
209 c[2] = a[14] * b0 + a[15] * b1 + a[16] * b2 + a[17] * b3 + a[18] * b4 + a[19] * b5 +
210 a[20] * b6;
211 c[3] = a[21] * b0 + a[22] * b1 + a[23] * b2 + a[24] * b3 + a[25] * b4 + a[26] * b5 +
212 a[27] * b6;
213 c[4] = a[28] * b0 + a[29] * b1 + a[30] * b2 + a[31] * b3 + a[32] * b4 + a[33] * b5 +
214 a[34] * b6;
215 c[5] = a[35] * b0 + a[36] * b1 + a[37] * b2 + a[38] * b3 + a[39] * b4 + a[40] * b5 +
216 a[41] * b6;
217 c[6] = a[42] * b0 + a[43] * b1 + a[44] * b2 + a[45] * b3 + a[46] * b4 + a[47] * b5 +
218 a[48] * b6;
219}
220
238void fasp_blas_smat_mxv(const REAL* a, const REAL* b, REAL* c, const INT n)
239{
240 switch (n) {
241 case 2:
242 fasp_blas_smat_mxv_nc2(a, b, c);
243 break;
244
245 case 3:
246 fasp_blas_smat_mxv_nc3(a, b, c);
247 break;
248
249 case 4:
250 fasp_blas_smat_mxv_nc4(a, b, c);
251 break;
252
253 case 5:
254 fasp_blas_smat_mxv_nc5(a, b, c);
255 break;
256
257 case 7:
258 fasp_blas_smat_mxv_nc7(a, b, c);
259 break;
260
261 default:
262 {
263 INT i, j, in = 0;
264 REAL temp;
265
266 for (i = 0; i < n; ++i, in += n) {
267 temp = 0.0;
268 for (j = 0; j < n; ++j) temp += a[in + j] * b[j];
269 c[i] = temp;
270 } // end for i
271 }
272 break;
273 }
274 return;
275}
276
289void fasp_blas_smat_mul_nc2(const REAL* a, const REAL* b, REAL* c)
290{
291 const REAL a0 = a[0], a1 = a[1];
292 const REAL a2 = a[2], a3 = a[3];
293
294 const REAL b0 = b[0], b1 = b[1];
295 const REAL b2 = b[2], b3 = b[3];
296
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;
301}
302
315void fasp_blas_smat_mul_nc3(const REAL* a, const REAL* b, REAL* c)
316{
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];
320
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];
324
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;
328
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;
332
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;
336}
337
350void fasp_blas_smat_mul_nc4(const REAL* a, const REAL* b, REAL* c)
351{
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];
356
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];
361
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;
366
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;
371
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;
376
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;
381}
382
395void fasp_blas_smat_mul_nc5(const REAL* a, const REAL* b, REAL* c)
396{
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];
402
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];
408
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;
414
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;
420
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;
426
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;
432
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;
438}
439
452void fasp_blas_smat_mul_nc7(const REAL* a, const REAL* b, REAL* c)
453{
454 const REAL a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],
455 a6 = a[6];
456 const REAL a7 = a[7], a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11], a12 = a[12],
457 a13 = a[13];
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];
468
469 const REAL b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5],
470 b6 = b[6];
471 const REAL b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12],
472 b13 = b[13];
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];
483
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;
491
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;
495 c[10] =
496 a7 * b3 + a8 * b10 + a9 * b17 + a10 * b24 + a11 * b31 + a12 * b38 + a13 * b45;
497 c[11] =
498 a7 * b4 + a8 * b11 + a9 * b18 + a10 * b25 + a11 * b32 + a12 * b39 + a13 * b46;
499 c[12] =
500 a7 * b5 + a8 * b12 + a9 * b19 + a10 * b26 + a11 * b33 + a12 * b40 + a13 * b47;
501 c[13] =
502 a7 * b6 + a8 * b13 + a9 * b20 + a10 * b27 + a11 * b34 + a12 * b41 + a13 * b48;
503
504 c[14] =
505 a14 * b0 + a15 * b7 + a16 * b14 + a17 * b21 + a18 * b28 + a19 * b35 + a20 * b42;
506 c[15] =
507 a14 * b1 + a15 * b8 + a16 * b15 + a17 * b22 + a18 * b29 + a19 * b36 + a20 * b43;
508 c[16] =
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 +
511 a20 * b45;
512 c[18] = a14 * b4 + a15 * b11 + a16 * b18 + a17 * b25 + a18 * b32 + a19 * b39 +
513 a20 * b46;
514 c[19] = a14 * b5 + a15 * b12 + a16 * b19 + a17 * b26 + a18 * b33 + a19 * b40 +
515 a20 * b47;
516 c[20] = a14 * b6 + a15 * b13 + a16 * b20 + a17 * b27 + a18 * b34 + a19 * b41 +
517 a20 * b48;
518
519 c[21] =
520 a21 * b0 + a22 * b7 + a23 * b14 + a24 * b21 + a25 * b28 + a26 * b35 + a27 * b42;
521 c[22] =
522 a21 * b1 + a22 * b8 + a23 * b15 + a24 * b22 + a25 * b29 + a26 * b36 + a27 * b43;
523 c[23] =
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 +
526 a27 * b45;
527 c[25] = a21 * b4 + a22 * b11 + a23 * b18 + a24 * b25 + a25 * b32 + a26 * b39 +
528 a27 * b46;
529 c[26] = a21 * b5 + a22 * b12 + a23 * b19 + a24 * b26 + a25 * b33 + a26 * b40 +
530 a27 * b47;
531 c[27] = a21 * b6 + a22 * b13 + a23 * b20 + a24 * b27 + a25 * b34 + a26 * b41 +
532 a27 * b48;
533
534 c[28] =
535 a28 * b0 + a29 * b7 + a30 * b14 + a31 * b21 + a32 * b28 + a33 * b35 + a34 * b42;
536 c[29] =
537 a28 * b1 + a29 * b8 + a30 * b15 + a31 * b22 + a32 * b29 + a33 * b36 + a34 * b43;
538 c[30] =
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 +
541 a34 * b45;
542 c[32] = a28 * b4 + a29 * b11 + a30 * b18 + a31 * b25 + a32 * b32 + a33 * b39 +
543 a34 * b46;
544 c[33] = a28 * b5 + a29 * b12 + a30 * b19 + a31 * b26 + a32 * b33 + a33 * b40 +
545 a34 * b47;
546 c[34] = a28 * b6 + a29 * b13 + a30 * b20 + a31 * b27 + a32 * b34 + a33 * b41 +
547 a34 * b48;
548
549 c[35] =
550 a35 * b0 + a36 * b7 + a37 * b14 + a38 * b21 + a39 * b28 + a40 * b35 + a41 * b42;
551 c[36] =
552 a35 * b1 + a36 * b8 + a37 * b15 + a38 * b22 + a39 * b29 + a40 * b36 + a41 * b43;
553 c[37] =
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 +
556 a41 * b45;
557 c[39] = a35 * b4 + a36 * b11 + a37 * b18 + a38 * b25 + a39 * b32 + a40 * b39 +
558 a41 * b46;
559 c[40] = a35 * b5 + a36 * b12 + a37 * b19 + a38 * b26 + a39 * b33 + a40 * b40 +
560 a41 * b47;
561 c[41] = a35 * b6 + a36 * b13 + a37 * b20 + a38 * b27 + a39 * b34 + a40 * b41 +
562 a41 * b48;
563
564 c[42] =
565 a42 * b0 + a43 * b7 + a44 * b14 + a45 * b21 + a46 * b28 + a47 * b35 + a48 * b42;
566 c[43] =
567 a42 * b1 + a43 * b8 + a44 * b15 + a45 * b22 + a46 * b29 + a47 * b36 + a48 * b43;
568 c[44] =
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 +
571 a48 * b45;
572 c[46] = a42 * b4 + a43 * b11 + a44 * b18 + a45 * b25 + a46 * b32 + a47 * b39 +
573 a48 * b46;
574 c[47] = a42 * b5 + a43 * b12 + a44 * b19 + a45 * b26 + a46 * b33 + a47 * b40 +
575 a48 * b47;
576 c[48] = a42 * b6 + a43 * b13 + a44 * b20 + a45 * b27 + a46 * b34 + a47 * b41 +
577 a48 * b48;
578}
579
596void fasp_blas_smat_mul(const REAL* a, const REAL* b, REAL* c, const INT n)
597{
598
599 switch (n) {
600 case 2:
601 fasp_blas_smat_mul_nc2(a, b, c);
602 break;
603
604 case 3:
605 fasp_blas_smat_mul_nc3(a, b, c);
606 break;
607
608 case 4:
609 fasp_blas_smat_mul_nc4(a, b, c);
610 break;
611
612 case 5:
613 fasp_blas_smat_mul_nc5(a, b, c);
614 break;
615
616 case 7:
617 fasp_blas_smat_mul_nc7(a, b, c);
618 break;
619
620 default:
621 {
622 const INT n2 = n * n;
623 INT i, j, k;
624 REAL temp;
625
626 for (i = 0; i < n2; i += n) {
627 for (j = 0; j < n; ++j) {
628 temp = 0.0; // Fixed by Chensong. Feb/22/2011.
629 for (k = 0; k < n; ++k) temp += a[i + k] * b[k * n + j];
630 c[i + j] = temp;
631 } // end for j
632 } // end for i
633 }
634 break;
635 }
636 return;
637}
638
651void fasp_blas_smat_ypAx_nc2(const REAL* A, const REAL* x, REAL* y)
652{
653 const REAL x0 = x[0], x1 = x[1];
654
655 y[0] += A[0] * x0 + A[1] * x1;
656 y[1] += A[2] * x0 + A[3] * x1;
657
658 return;
659}
660
673void fasp_blas_smat_ypAx_nc3(const REAL* A, const REAL* x, REAL* y)
674{
675 const REAL x0 = x[0], x1 = x[1], x2 = x[2];
676
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;
680 return;
681}
682
695void fasp_blas_smat_ypAx_nc4(const REAL* A, const REAL* x, REAL* y)
696{
697 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
698
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;
703 return;
704}
705
718void fasp_blas_smat_ypAx_nc5(const REAL* A, const REAL* x, REAL* y)
719{
720 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4];
721
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;
727 return;
728}
729
742void fasp_blas_smat_ypAx_nc7(const REAL* A, const REAL* x, REAL* y)
743{
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];
746
747 y[0] += A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 + A[5] * x5 +
748 A[6] * x6;
749 y[1] += A[7] * x0 + A[8] * x1 + A[9] * x2 + A[10] * x3 + A[11] * x4 + A[12] * x5 +
750 A[13] * x6;
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;
761 return;
762}
763
779void fasp_blas_smat_ypAx(const REAL* A, const REAL* x, REAL* y, const INT n)
780{
781 switch (n) {
782 case 1:
783 {
784 y[0] += A[0] * x[0];
785 break;
786 }
787 case 2:
788 {
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;
792 break;
793 }
794 case 3:
795 {
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;
800 break;
801 }
802 case 4:
803 {
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;
809 break;
810 }
811 case 5:
812 {
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;
819 break;
820 }
821 case 6:
822 {
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 +
826 A[5] * x5;
827 y[1] += A[6] * x0 + A[7] * x1 + A[8] * x2 + A[9] * x3 + A[10] * x4 +
828 A[11] * x5;
829 y[2] += A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3 + A[16] * x4 +
830 A[17] * x5;
831 y[3] += A[18] * x0 + A[19] * x1 + A[20] * x2 + A[21] * x3 + A[22] * x4 +
832 A[23] * x5;
833 y[4] += A[24] * x0 + A[25] * x1 + A[26] * x2 + A[27] * x3 + A[28] * x4 +
834 A[29] * x5;
835 y[5] += A[30] * x0 + A[31] * x1 + A[32] * x2 + A[33] * x3 + A[34] * x4 +
836 A[35] * x5;
837 break;
838 }
839 case 7:
840 {
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;
857 break;
858 }
859 default: /* For everything beyond 7 */
860 {
861 INT i, j, k;
862
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];
866 }
867 }
868 break;
869 }
870 }
871
872 return;
873}
874
889void fasp_blas_smat_ymAx_nc2(const REAL* A, const REAL* x, REAL* y)
890{
891 const REAL x0 = x[0], x1 = x[1];
892
893 y[0] -= A[0] * x0 + A[1] * x1;
894 y[1] -= A[2] * x0 + A[3] * x1;
895
896 return;
897}
898
913void fasp_blas_smat_ymAx_nc3(const REAL* A, const REAL* x, REAL* y)
914{
915 const REAL x0 = x[0], x1 = x[1], x2 = x[2];
916
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;
920
921 return;
922}
923
938void fasp_blas_smat_ymAx_nc4(const REAL* A, const REAL* x, REAL* y)
939{
940 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3];
941
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;
946 return;
947}
948
963void fasp_blas_smat_ymAx_nc5(const REAL* A, const REAL* x, REAL* y)
964{
965 const REAL x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4];
966
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;
972
973 return;
974}
975
990void fasp_blas_smat_ymAx_nc7(const REAL* A, const REAL* x, REAL* y)
991{
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];
994
995 y[0] -= A[0] * x0 + A[1] * x1 + A[2] * x2 + A[3] * x3 + A[4] * x4 + A[5] * x5 +
996 A[6] * x6;
997 y[1] -= A[7] * x0 + A[8] * x1 + A[9] * x2 + A[10] * x3 + A[11] * x4 + A[12] * x5 +
998 A[13] * x6;
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;
1009
1010 return;
1011}
1012
1028void fasp_blas_smat_ymAx(const REAL* A, const REAL* x, REAL* y, const INT n)
1029{
1030 switch (n) {
1031 case 1:
1032 {
1033 y[0] -= A[0] * x[0];
1034 break;
1035 }
1036 case 2:
1037 {
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;
1041 break;
1042 }
1043 case 3:
1044 {
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;
1049 break;
1050 }
1051 case 4:
1052 {
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;
1058 break;
1059 }
1060 case 5:
1061 {
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;
1068 break;
1069 }
1070 case 6:
1071 {
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 +
1075 A[5] * x5;
1076 y[1] -= A[6] * x0 + A[7] * x1 + A[8] * x2 + A[9] * x3 + A[10] * x4 +
1077 A[11] * x5;
1078 y[2] -= A[12] * x0 + A[13] * x1 + A[14] * x2 + A[15] * x3 + A[16] * x4 +
1079 A[17] * x5;
1080 y[3] -= A[18] * x0 + A[19] * x1 + A[20] * x2 + A[21] * x3 + A[22] * x4 +
1081 A[23] * x5;
1082 y[4] -= A[24] * x0 + A[25] * x1 + A[26] * x2 + A[27] * x3 + A[28] * x4 +
1083 A[29] * x5;
1084 y[5] -= A[30] * x0 + A[31] * x1 + A[32] * x2 + A[33] * x3 + A[34] * x4 +
1085 A[35] * x5;
1086 break;
1087 }
1088 case 7:
1089 {
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;
1106 break;
1107 }
1108 default: // Everything beyond 7
1109 {
1110 INT i, j, k;
1111
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];
1115 }
1116 }
1117 break;
1118 }
1119 }
1120
1121 return;
1122}
1123
1141 const REAL* A,
1142 const REAL* x,
1143 const REAL beta,
1144 REAL* y,
1145 const INT n)
1146{
1147 INT i, j, k;
1148 REAL tmp = 0.0;
1149
1150 if (alpha == 0) {
1151 for (i = 0; i < n; i++) y[i] *= beta;
1152 return;
1153 }
1154
1155 // y := (beta/alpha)y
1156 tmp = beta / alpha;
1157 if (tmp != 1.0) {
1158 for (i = 0; i < n; i++) y[i] *= tmp;
1159 }
1160
1161 // y := y + A*x
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];
1165 }
1166 }
1167
1168 // y := alpha*y
1169 if (alpha != 1.0) {
1170 for (i = 0; i < n; i++) y[i] *= alpha;
1171 }
1172}
1173
1174/*---------------------------------*/
1175/*-- End of File --*/
1176/*---------------------------------*/
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.
Definition: BlaSmallMat.c:779
void fasp_blas_smat_axm(REAL *a, const INT n, const REAL alpha)
Compute a = alpha*a (in place)
Definition: BlaSmallMat.c:37
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.
Definition: BlaSmallMat.c:350
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.
Definition: BlaSmallMat.c:673
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.
Definition: BlaSmallMat.c:651
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.
Definition: BlaSmallMat.c:200
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.
Definition: BlaSmallMat.c:596
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.
Definition: BlaSmallMat.c:176
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.
Definition: BlaSmallMat.c:913
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.
Definition: BlaSmallMat.c:154
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.
Definition: BlaSmallMat.c:990
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.
Definition: BlaSmallMat.c:1140
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.
Definition: BlaSmallMat.c:238
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.
Definition: BlaSmallMat.c:86
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.
Definition: BlaSmallMat.c:1028
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.
Definition: BlaSmallMat.c:289
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.
Definition: BlaSmallMat.c:695
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.
Definition: BlaSmallMat.c:315
void fasp_blas_smat_axm1(REAL *a, const INT n, const REAL alpha, REAL *b)
Compute b = alpha*a (in place)
Definition: BlaSmallMat.c:60
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.
Definition: BlaSmallMat.c:452
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.
Definition: BlaSmallMat.c:718
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.
Definition: BlaSmallMat.c:133
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.
Definition: BlaSmallMat.c:742
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.
Definition: BlaSmallMat.c:113
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.
Definition: BlaSmallMat.c:938
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.
Definition: BlaSmallMat.c:395
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.
Definition: BlaSmallMat.c:889
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.
Definition: BlaSmallMat.c:963
Main header file for the FASP project.
#define REAL
Definition: fasp.h:75
#define INT
Definition: fasp.h:72