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