1
2
3
4 #include <stdio.h>
5 #include "blas_extended.h"
6 #include "blas_extended_test.h"
7
sge_commit_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,float * a,int lda,float * a_vec,int row)8 void sge_commit_row(enum blas_order_type order, enum blas_trans_type trans,
9 int m, int n, float *a, int lda, float *a_vec, int row)
10 {
11 int ai;
12 int i;
13 int incai;
14 int incvi = 1;
15 int vi;
16
17 float a_elem;
18 float *a_i = a;
19 const float *a_vec_i = a_vec;
20
21 if (order == blas_colmajor) {
22 if (trans == blas_no_trans) {
23 incai = lda;
24 ai = row;
25 } else {
26 incai = 1;
27 ai = row * lda;
28 }
29 } else {
30 if (trans == blas_no_trans) {
31 incai = 1;
32 ai = row * lda;
33 } else {
34 incai = lda;
35 ai = row;
36 }
37 }
38
39
40
41
42
43 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
44 a_elem = a_vec_i[vi];
45 a_i[ai] = a_elem;
46 }
47 }
dge_commit_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,double * a,int lda,double * a_vec,int row)48 void dge_commit_row(enum blas_order_type order, enum blas_trans_type trans,
49 int m, int n, double *a, int lda, double *a_vec, int row)
50 {
51 int ai;
52 int i;
53 int incai;
54 int incvi = 1;
55 int vi;
56
57 double a_elem;
58 double *a_i = a;
59 const double *a_vec_i = a_vec;
60
61 if (order == blas_colmajor) {
62 if (trans == blas_no_trans) {
63 incai = lda;
64 ai = row;
65 } else {
66 incai = 1;
67 ai = row * lda;
68 }
69 } else {
70 if (trans == blas_no_trans) {
71 incai = 1;
72 ai = row * lda;
73 } else {
74 incai = lda;
75 ai = row;
76 }
77 }
78
79
80
81
82
83 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
84 a_elem = a_vec_i[vi];
85 a_i[ai] = a_elem;
86 }
87 }
cge_commit_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int row)88 void cge_commit_row(enum blas_order_type order, enum blas_trans_type trans,
89 int m, int n, void *a, int lda, void *a_vec, int row)
90 {
91 int ai;
92 int i;
93 int incai;
94 int incvi = 1;
95 int vi;
96
97 float a_elem[2];
98 float *a_i = (float *) a;
99 const float *a_vec_i = (float *) a_vec;
100
101 if (order == blas_colmajor) {
102 if (trans == blas_no_trans) {
103 incai = lda;
104 ai = row;
105 } else {
106 incai = 1;
107 ai = row * lda;
108 }
109 } else {
110 if (trans == blas_no_trans) {
111 incai = 1;
112 ai = row * lda;
113 } else {
114 incai = lda;
115 ai = row;
116 }
117 }
118
119 ai *= 2;
120 incai *= 2;
121 incvi *= 2;
122
123 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
124 a_elem[0] = a_vec_i[vi];
125 a_elem[1] = a_vec_i[vi + 1];
126
127 if (trans == blas_conj_trans) {
128 a_elem[1] = -a_elem[1];
129 }
130 a_i[ai] = a_elem[0];
131 a_i[ai + 1] = a_elem[1];
132 }
133 }
zge_commit_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int row)134 void zge_commit_row(enum blas_order_type order, enum blas_trans_type trans,
135 int m, int n, void *a, int lda, void *a_vec, int row)
136 {
137 int ai;
138 int i;
139 int incai;
140 int incvi = 1;
141 int vi;
142
143 double a_elem[2];
144 double *a_i = (double *) a;
145 const double *a_vec_i = (double *) a_vec;
146
147 if (order == blas_colmajor) {
148 if (trans == blas_no_trans) {
149 incai = lda;
150 ai = row;
151 } else {
152 incai = 1;
153 ai = row * lda;
154 }
155 } else {
156 if (trans == blas_no_trans) {
157 incai = 1;
158 ai = row * lda;
159 } else {
160 incai = lda;
161 ai = row;
162 }
163 }
164
165 ai *= 2;
166 incai *= 2;
167 incvi *= 2;
168
169 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
170 a_elem[0] = a_vec_i[vi];
171 a_elem[1] = a_vec_i[vi + 1];
172
173 if (trans == blas_conj_trans) {
174 a_elem[1] = -a_elem[1];
175 }
176 a_i[ai] = a_elem[0];
177 a_i[ai + 1] = a_elem[1];
178 }
179 }
180
sge_commit_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,float * a,int lda,float * a_vec,int col)181 void sge_commit_col(enum blas_order_type order, enum blas_trans_type trans,
182 int m, int n, float *a, int lda, float *a_vec, int col)
183 {
184 int ai;
185 int i;
186 int incai;
187 int incvi = 1;
188 int vi;
189
190 float a_elem;
191 float *a_i = a;
192 const float *a_vec_i = a_vec;
193
194 if (order == blas_colmajor) {
195 if (trans == blas_no_trans) {
196 incai = 1;
197 ai = col * lda;
198 } else {
199 incai = lda;
200 ai = col;
201 }
202 } else {
203 if (trans == blas_no_trans) {
204 incai = lda;
205 ai = col;
206 } else {
207 incai = 1;
208 ai = col * lda;
209 }
210 }
211
212
213
214
215
216 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
217 a_elem = a_vec_i[vi];
218 a_i[ai] = a_elem;
219 }
220 }
dge_commit_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,double * a,int lda,double * a_vec,int col)221 void dge_commit_col(enum blas_order_type order, enum blas_trans_type trans,
222 int m, int n, double *a, int lda, double *a_vec, int col)
223 {
224 int ai;
225 int i;
226 int incai;
227 int incvi = 1;
228 int vi;
229
230 double a_elem;
231 double *a_i = a;
232 const double *a_vec_i = a_vec;
233
234 if (order == blas_colmajor) {
235 if (trans == blas_no_trans) {
236 incai = 1;
237 ai = col * lda;
238 } else {
239 incai = lda;
240 ai = col;
241 }
242 } else {
243 if (trans == blas_no_trans) {
244 incai = lda;
245 ai = col;
246 } else {
247 incai = 1;
248 ai = col * lda;
249 }
250 }
251
252
253
254
255
256 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
257 a_elem = a_vec_i[vi];
258 a_i[ai] = a_elem;
259 }
260 }
cge_commit_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int col)261 void cge_commit_col(enum blas_order_type order, enum blas_trans_type trans,
262 int m, int n, void *a, int lda, void *a_vec, int col)
263 {
264 int ai;
265 int i;
266 int incai;
267 int incvi = 1;
268 int vi;
269
270 float a_elem[2];
271 float *a_i = (float *) a;
272 const float *a_vec_i = (float *) a_vec;
273
274 if (order == blas_colmajor) {
275 if (trans == blas_no_trans) {
276 incai = 1;
277 ai = col * lda;
278 } else {
279 incai = lda;
280 ai = col;
281 }
282 } else {
283 if (trans == blas_no_trans) {
284 incai = lda;
285 ai = col;
286 } else {
287 incai = 1;
288 ai = col * lda;
289 }
290 }
291
292 ai *= 2;
293 incai *= 2;
294 incvi *= 2;
295
296 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
297 a_elem[0] = a_vec_i[vi];
298 a_elem[1] = a_vec_i[vi + 1];
299
300 if (trans == blas_conj_trans) {
301 a_elem[1] = -a_elem[1];
302 }
303 a_i[ai] = a_elem[0];
304 a_i[ai + 1] = a_elem[1];
305 }
306 }
zge_commit_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int col)307 void zge_commit_col(enum blas_order_type order, enum blas_trans_type trans,
308 int m, int n, void *a, int lda, void *a_vec, int col)
309 {
310 int ai;
311 int i;
312 int incai;
313 int incvi = 1;
314 int vi;
315
316 double a_elem[2];
317 double *a_i = (double *) a;
318 const double *a_vec_i = (double *) a_vec;
319
320 if (order == blas_colmajor) {
321 if (trans == blas_no_trans) {
322 incai = 1;
323 ai = col * lda;
324 } else {
325 incai = lda;
326 ai = col;
327 }
328 } else {
329 if (trans == blas_no_trans) {
330 incai = lda;
331 ai = col;
332 } else {
333 incai = 1;
334 ai = col * lda;
335 }
336 }
337
338 ai *= 2;
339 incai *= 2;
340 incvi *= 2;
341
342 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
343 a_elem[0] = a_vec_i[vi];
344 a_elem[1] = a_vec_i[vi + 1];
345
346 if (trans == blas_conj_trans) {
347 a_elem[1] = -a_elem[1];
348 }
349 a_i[ai] = a_elem[0];
350 a_i[ai + 1] = a_elem[1];
351 }
352 }
353
sge_copy_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,float * a,int lda,float * a_vec,int row)354 void sge_copy_row(enum blas_order_type order, enum blas_trans_type trans,
355 int m, int n, float *a, int lda, float *a_vec, int row)
356 {
357
358 int ai;
359 int incai;
360 int i;
361 int incvi = 1;
362 int vi;
363
364 float a_elem;
365 const float *a_i = a;
366 float *a_vec_i = a_vec;
367
368 if (order == blas_colmajor) {
369 if (trans == blas_no_trans) {
370 ai = row;
371 incai = lda;
372 } else {
373 ai = row * lda;
374 incai = 1;
375 }
376 } else {
377 if (trans == blas_no_trans) {
378 ai = row * lda;
379 incai = 1;
380 } else {
381 ai = row;
382 incai = lda;
383 }
384
385 }
386
387
388
389
390
391 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
392 a_elem = a_i[ai];
393 a_vec_i[vi] = a_elem;
394 }
395
396 }
dge_copy_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,double * a,int lda,double * a_vec,int row)397 void dge_copy_row(enum blas_order_type order, enum blas_trans_type trans,
398 int m, int n, double *a, int lda, double *a_vec, int row)
399 {
400
401 int ai;
402 int incai;
403 int i;
404 int incvi = 1;
405 int vi;
406
407 double a_elem;
408 const double *a_i = a;
409 double *a_vec_i = a_vec;
410
411 if (order == blas_colmajor) {
412 if (trans == blas_no_trans) {
413 ai = row;
414 incai = lda;
415 } else {
416 ai = row * lda;
417 incai = 1;
418 }
419 } else {
420 if (trans == blas_no_trans) {
421 ai = row * lda;
422 incai = 1;
423 } else {
424 ai = row;
425 incai = lda;
426 }
427
428 }
429
430
431
432
433
434 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
435 a_elem = a_i[ai];
436 a_vec_i[vi] = a_elem;
437 }
438
439 }
cge_copy_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int row)440 void cge_copy_row(enum blas_order_type order, enum blas_trans_type trans,
441 int m, int n, void *a, int lda, void *a_vec, int row)
442 {
443
444 int ai;
445 int incai;
446 int i;
447 int incvi = 1;
448 int vi;
449
450 float a_elem[2];
451 const float *a_i = (float *) a;
452 float *a_vec_i = (float *) a_vec;
453
454 if (order == blas_colmajor) {
455 if (trans == blas_no_trans) {
456 ai = row;
457 incai = lda;
458 } else {
459 ai = row * lda;
460 incai = 1;
461 }
462 } else {
463 if (trans == blas_no_trans) {
464 ai = row * lda;
465 incai = 1;
466 } else {
467 ai = row;
468 incai = lda;
469 }
470
471 }
472
473 ai *= 2;
474 incai *= 2;
475 incvi *= 2;
476
477 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
478 a_elem[0] = a_i[ai];
479 a_elem[1] = a_i[ai + 1];
480
481 if (trans == blas_conj_trans) {
482 a_elem[1] = -a_elem[1];
483 }
484 a_vec_i[vi] = a_elem[0];
485 a_vec_i[vi + 1] = a_elem[1];
486 }
487
488 }
zge_copy_row(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int row)489 void zge_copy_row(enum blas_order_type order, enum blas_trans_type trans,
490 int m, int n, void *a, int lda, void *a_vec, int row)
491 {
492
493 int ai;
494 int incai;
495 int i;
496 int incvi = 1;
497 int vi;
498
499 double a_elem[2];
500 const double *a_i = (double *) a;
501 double *a_vec_i = (double *) a_vec;
502
503 if (order == blas_colmajor) {
504 if (trans == blas_no_trans) {
505 ai = row;
506 incai = lda;
507 } else {
508 ai = row * lda;
509 incai = 1;
510 }
511 } else {
512 if (trans == blas_no_trans) {
513 ai = row * lda;
514 incai = 1;
515 } else {
516 ai = row;
517 incai = lda;
518 }
519
520 }
521
522 ai *= 2;
523 incai *= 2;
524 incvi *= 2;
525
526 for (i = 0, vi = 0; i < n; i++, vi += incvi, ai += incai) {
527 a_elem[0] = a_i[ai];
528 a_elem[1] = a_i[ai + 1];
529
530 if (trans == blas_conj_trans) {
531 a_elem[1] = -a_elem[1];
532 }
533 a_vec_i[vi] = a_elem[0];
534 a_vec_i[vi + 1] = a_elem[1];
535 }
536
537 }
538
sge_copy_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,float * a,int lda,float * a_vec,int col)539 void sge_copy_col(enum blas_order_type order, enum blas_trans_type trans,
540 int m, int n, float *a, int lda, float *a_vec, int col)
541 {
542
543 int ai;
544 int incai;
545 int i;
546 int incvi = 1;
547 int vi;
548
549 float a_elem;
550 const float *a_i = a;
551 float *a_vec_i = a_vec;
552
553 if (order == blas_rowmajor) {
554 if (trans == blas_no_trans) {
555 ai = col;
556 incai = lda;
557 } else {
558 ai = col * lda;
559 incai = 1;
560 }
561 } else {
562 if (trans == blas_no_trans) {
563 ai = col * lda;
564 incai = 1;
565 } else {
566 ai = col;
567 incai = lda;
568 }
569 }
570
571
572
573
574
575 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
576 a_elem = a_i[ai];
577 a_vec_i[vi] = a_elem;
578 }
579
580 }
dge_copy_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,double * a,int lda,double * a_vec,int col)581 void dge_copy_col(enum blas_order_type order, enum blas_trans_type trans,
582 int m, int n, double *a, int lda, double *a_vec, int col)
583 {
584
585 int ai;
586 int incai;
587 int i;
588 int incvi = 1;
589 int vi;
590
591 double a_elem;
592 const double *a_i = a;
593 double *a_vec_i = a_vec;
594
595 if (order == blas_rowmajor) {
596 if (trans == blas_no_trans) {
597 ai = col;
598 incai = lda;
599 } else {
600 ai = col * lda;
601 incai = 1;
602 }
603 } else {
604 if (trans == blas_no_trans) {
605 ai = col * lda;
606 incai = 1;
607 } else {
608 ai = col;
609 incai = lda;
610 }
611 }
612
613
614
615
616
617 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
618 a_elem = a_i[ai];
619 a_vec_i[vi] = a_elem;
620 }
621
622 }
cge_copy_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int col)623 void cge_copy_col(enum blas_order_type order, enum blas_trans_type trans,
624 int m, int n, void *a, int lda, void *a_vec, int col)
625 {
626
627 int ai;
628 int incai;
629 int i;
630 int incvi = 1;
631 int vi;
632
633 float a_elem[2];
634 const float *a_i = (float *) a;
635 float *a_vec_i = (float *) a_vec;
636
637 if (order == blas_rowmajor) {
638 if (trans == blas_no_trans) {
639 ai = col;
640 incai = lda;
641 } else {
642 ai = col * lda;
643 incai = 1;
644 }
645 } else {
646 if (trans == blas_no_trans) {
647 ai = col * lda;
648 incai = 1;
649 } else {
650 ai = col;
651 incai = lda;
652 }
653 }
654
655 ai *= 2;
656 incai *= 2;
657 incvi *= 2;
658
659 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
660 a_elem[0] = a_i[ai];
661 a_elem[1] = a_i[ai + 1];
662
663 if (trans == blas_conj_trans) {
664 a_elem[1] = -a_elem[1];
665 }
666 a_vec_i[vi] = a_elem[0];
667 a_vec_i[vi + 1] = a_elem[1];
668 }
669
670 }
zge_copy_col(enum blas_order_type order,enum blas_trans_type trans,int m,int n,void * a,int lda,void * a_vec,int col)671 void zge_copy_col(enum blas_order_type order, enum blas_trans_type trans,
672 int m, int n, void *a, int lda, void *a_vec, int col)
673 {
674
675 int ai;
676 int incai;
677 int i;
678 int incvi = 1;
679 int vi;
680
681 double a_elem[2];
682 const double *a_i = (double *) a;
683 double *a_vec_i = (double *) a_vec;
684
685 if (order == blas_rowmajor) {
686 if (trans == blas_no_trans) {
687 ai = col;
688 incai = lda;
689 } else {
690 ai = col * lda;
691 incai = 1;
692 }
693 } else {
694 if (trans == blas_no_trans) {
695 ai = col * lda;
696 incai = 1;
697 } else {
698 ai = col;
699 incai = lda;
700 }
701 }
702
703 ai *= 2;
704 incai *= 2;
705 incvi *= 2;
706
707 for (i = 0, vi = 0; i < m; i++, vi += incvi, ai += incai) {
708 a_elem[0] = a_i[ai];
709 a_elem[1] = a_i[ai + 1];
710
711 if (trans == blas_conj_trans) {
712 a_elem[1] = -a_elem[1];
713 }
714 a_vec_i[vi] = a_elem[0];
715 a_vec_i[vi + 1] = a_elem[1];
716 }
717
718 }
719
sge_copy_matrix(enum blas_order_type order,int m,int n,float * a,int lda,float * b,int ldb)720 void sge_copy_matrix(enum blas_order_type order, int m, int n, float *a,
721 int lda, float *b, int ldb)
722 {
723
724 int ai, aij;
725 int bi, bij;
726 int incai, incaij;
727 int incbi, incbij;
728
729 int i, j;
730
731 float elem;
732 float *a_i = a;
733 const float *b_i = b;
734
735 if (order == blas_colmajor) {
736 incai = 1;
737 incbi = 1;
738 incaij = lda;
739 incbij = ldb;
740 } else {
741 incai = lda;
742 incbi = ldb;
743 incaij = 1;
744 incbij = 1;
745 }
746
747
748
749
750
751
752 for (i = 0, ai = 0, bi = 0; i < m; i++, ai += incai, bi += incbi) {
753 for (j = 0, aij = ai, bij = bi; j < n; j++, aij += incaij, bij += incbij) {
754 elem = b_i[bij];
755 a_i[aij] = elem;
756 }
757 }
758
759 }
dge_copy_matrix(enum blas_order_type order,int m,int n,double * a,int lda,double * b,int ldb)760 void dge_copy_matrix(enum blas_order_type order, int m, int n, double *a,
761 int lda, double *b, int ldb)
762 {
763
764 int ai, aij;
765 int bi, bij;
766 int incai, incaij;
767 int incbi, incbij;
768
769 int i, j;
770
771 double elem;
772 double *a_i = a;
773 const double *b_i = b;
774
775 if (order == blas_colmajor) {
776 incai = 1;
777 incbi = 1;
778 incaij = lda;
779 incbij = ldb;
780 } else {
781 incai = lda;
782 incbi = ldb;
783 incaij = 1;
784 incbij = 1;
785 }
786
787
788
789
790
791
792 for (i = 0, ai = 0, bi = 0; i < m; i++, ai += incai, bi += incbi) {
793 for (j = 0, aij = ai, bij = bi; j < n; j++, aij += incaij, bij += incbij) {
794 elem = b_i[bij];
795 a_i[aij] = elem;
796 }
797 }
798
799 }
cge_copy_matrix(enum blas_order_type order,int m,int n,void * a,int lda,void * b,int ldb)800 void cge_copy_matrix(enum blas_order_type order, int m, int n, void *a,
801 int lda, void *b, int ldb)
802 {
803
804 int ai, aij;
805 int bi, bij;
806 int incai, incaij;
807 int incbi, incbij;
808
809 int i, j;
810
811 float elem[2];
812 float *a_i = (float *) a;
813 const float *b_i = (float *) b;
814
815 if (order == blas_colmajor) {
816 incai = 1;
817 incbi = 1;
818 incaij = lda;
819 incbij = ldb;
820 } else {
821 incai = lda;
822 incbi = ldb;
823 incaij = 1;
824 incbij = 1;
825 }
826
827 incai *= 2;
828 incaij *= 2;
829 incbi *= 2;
830 incbij *= 2;
831
832 for (i = 0, ai = 0, bi = 0; i < m; i++, ai += incai, bi += incbi) {
833 for (j = 0, aij = ai, bij = bi; j < n; j++, aij += incaij, bij += incbij) {
834 elem[0] = b_i[bij];
835 elem[1] = b_i[bij + 1];
836 a_i[aij] = elem[0];
837 a_i[aij + 1] = elem[1];
838 }
839 }
840
841 }
zge_copy_matrix(enum blas_order_type order,int m,int n,void * a,int lda,void * b,int ldb)842 void zge_copy_matrix(enum blas_order_type order, int m, int n, void *a,
843 int lda, void *b, int ldb)
844 {
845
846 int ai, aij;
847 int bi, bij;
848 int incai, incaij;
849 int incbi, incbij;
850
851 int i, j;
852
853 double elem[2];
854 double *a_i = (double *) a;
855 const double *b_i = (double *) b;
856
857 if (order == blas_colmajor) {
858 incai = 1;
859 incbi = 1;
860 incaij = lda;
861 incbij = ldb;
862 } else {
863 incai = lda;
864 incbi = ldb;
865 incaij = 1;
866 incbij = 1;
867 }
868
869 incai *= 2;
870 incaij *= 2;
871 incbi *= 2;
872 incbij *= 2;
873
874 for (i = 0, ai = 0, bi = 0; i < m; i++, ai += incai, bi += incbi) {
875 for (j = 0, aij = ai, bij = bi; j < n; j++, aij += incaij, bij += incbij) {
876 elem[0] = b_i[bij];
877 elem[1] = b_i[bij + 1];
878 a_i[aij] = elem[0];
879 a_i[aij + 1] = elem[1];
880 }
881 }
882
883 }
884
sge_print_matrix(float * a,int m,int n,int lda,enum blas_order_type order,const char * name)885 void sge_print_matrix(float *a, int m, int n, int lda,
886 enum blas_order_type order, const char *name)
887 {
888 int ai, aij;
889 int incai, incaij;
890 int i, j;
891
892 const float *a_i = a;
893
894 if (order == blas_rowmajor) {
895 incai = lda;
896 incaij = 1;
897 } else {
898 incai = 1;
899 incaij = lda;
900 }
901
902
903
904
905 if (name) {
906 printf("%s = ", name);
907 }
908 printf("[\n");
909 for (i = 0, ai = 0; i < m; i++, ai += incai) {
910 printf(" ");
911 for (j = 0, aij = ai; j < n; j++, aij += incaij) {
912 printf("%16.8e", a_i[aij]);
913 }
914 printf("\n");
915 }
916 printf("];\n");
917
918 }
dge_print_matrix(double * a,int m,int n,int lda,enum blas_order_type order,const char * name)919 void dge_print_matrix(double *a, int m, int n, int lda,
920 enum blas_order_type order, const char *name)
921 {
922 int ai, aij;
923 int incai, incaij;
924 int i, j;
925
926 const double *a_i = a;
927
928 if (order == blas_rowmajor) {
929 incai = lda;
930 incaij = 1;
931 } else {
932 incai = 1;
933 incaij = lda;
934 }
935
936
937
938
939 if (name) {
940 printf("%s = ", name);
941 }
942 printf("[\n");
943 for (i = 0, ai = 0; i < m; i++, ai += incai) {
944 printf(" ");
945 for (j = 0, aij = ai; j < n; j++, aij += incaij) {
946 printf("%24.16e", a_i[aij]);
947 }
948 printf("\n");
949 }
950 printf("];\n");
951
952 }
cge_print_matrix(void * a,int m,int n,int lda,enum blas_order_type order,const char * name)953 void cge_print_matrix(void *a, int m, int n, int lda,
954 enum blas_order_type order, const char *name)
955 {
956 int ai, aij;
957 int incai, incaij;
958 int i, j;
959
960 const float *a_i = (float *) a;
961
962 if (order == blas_rowmajor) {
963 incai = lda;
964 incaij = 1;
965 } else {
966 incai = 1;
967 incaij = lda;
968 }
969
970 incai *= 2;
971 incaij *= 2;
972
973 if (name) {
974 printf("%s = ", name);
975 }
976 printf("[\n");
977 for (i = 0, ai = 0; i < m; i++, ai += incai) {
978 printf(" ");
979 for (j = 0, aij = ai; j < n; j++, aij += incaij) {
980 printf("(%16.8e, %16.8e)", a_i[aij], a_i[aij + 1]);
981 }
982 printf("\n");
983 }
984 printf("];\n");
985
986 }
zge_print_matrix(void * a,int m,int n,int lda,enum blas_order_type order,const char * name)987 void zge_print_matrix(void *a, int m, int n, int lda,
988 enum blas_order_type order, const char *name)
989 {
990 int ai, aij;
991 int incai, incaij;
992 int i, j;
993
994 const double *a_i = (double *) a;
995
996 if (order == blas_rowmajor) {
997 incai = lda;
998 incaij = 1;
999 } else {
1000 incai = 1;
1001 incaij = lda;
1002 }
1003
1004 incai *= 2;
1005 incaij *= 2;
1006
1007 if (name) {
1008 printf("%s = ", name);
1009 }
1010 printf("[\n");
1011 for (i = 0, ai = 0; i < m; i++, ai += incai) {
1012 printf(" ");
1013 for (j = 0, aij = ai; j < n; j++, aij += incaij) {
1014 printf("(%24.16e, %24.16e)", a_i[aij], a_i[aij + 1]);
1015 }
1016 printf("\n");
1017 }
1018 printf("];\n");
1019
1020 }
1021