1 
2 #include "blas_extended.h"
3 #include "blas_extended_private.h"
4 #include "blas_extended_test.h"
5 
6 
sgbmv_prepare(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,float * AB,int lda,float * y,int row,int * nfix2,int * nmix,int * ysize)7 void sgbmv_prepare(enum blas_order_type order, enum blas_trans_type trans,
8 		   int m, int n, int kl, int ku, float *AB, int lda, float *y,
9 		   int row, int *nfix2, int *nmix, int *ysize)
10 {
11   int ra, la, i, iy;
12   int n_i;
13   int inc = 1;
14   float *y_i = y;
15   if ((order == blas_colmajor) && (trans == blas_no_trans)) {
16     ra = ku;
17     la = kl;
18   } else if ((order == blas_colmajor) && (trans == blas_trans)) {
19     ra = kl;
20     la = ku;
21   } else if ((order == blas_rowmajor) && (trans == blas_no_trans)) {
22     ra = ku;
23     la = kl;
24   } else {			/* rowmajor and blas_trans */
25     ra = kl;
26     la = ku;
27   }
28 
29   if (trans == blas_no_trans)
30     n_i = n;
31   else
32     n_i = m;
33 
34   /* DETERMINE SIZE OF VECTOR TO BE SUBMITTED TO TESTGEN */
35 
36   if (row + ra + 1 < n_i) {
37     *ysize = ra + row + 1;
38   } else {
39     *ysize = n_i;
40   }
41 
42   /* SET NMIX AND NFIX */
43   if (row == 0) {
44     *nmix = 0;
45     *nfix2 = 0;
46   } else {
47     if (row > la) {
48       *nfix2 = row - la;
49     } else {
50       *nfix2 = 0;
51     }
52     if (*nfix2 > n_i)
53       *nfix2 = n_i;
54     if (row <= n_i - ra - 1) {
55       *nmix = (*ysize) - (*nfix2) - 1;
56     } else {
57       *nmix = (*ysize) - (*nfix2);
58     }
59   }
60 
61   /* SET ALL VALUES OF Y TO  = 0.0; */
62 
63   for (i = 0, iy = 0; i < *ysize; i++, iy += inc) {
64     y_i[iy] = 0.0;
65   }
66 }
sgbmv_commit(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,float * AB,int lda,float * y,int row)67 void sgbmv_commit(enum blas_order_type order, enum blas_trans_type trans,
68 		  int m, int n, int kl, int ku, float *AB, int lda, float *y,
69 		  int row)
70 {
71   int i, j;
72   float *AB_i = AB;
73   float *y_i = y;
74   float ytemp;
75   int inc = 1;
76 
77   row++;
78 
79 
80   if (trans == blas_no_trans) {
81     if (order == blas_colmajor) {
82       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
83 	ytemp = y_i[(j - 1) * inc];
84 	AB_i[(ku + row - j + lda * (j - 1)) * inc] = ytemp;
85       }
86     } else {
87       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
88 	ytemp = y_i[(j - 1) * inc];
89 	AB_i[((row - 1) * lda + kl + j - row) * inc] = ytemp;
90       }
91     }
92   } else {
93     if (order == blas_colmajor) {
94       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
95 	ytemp = y_i[(i - 1) * inc];
96 	AB_i[(ku + i - row + lda * (row - 1)) * inc] = ytemp;
97       }
98     } else {
99       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
100 	ytemp = y_i[(i - 1) * inc];
101 	AB_i[((i - 1) * lda + kl - i + row) * inc] = ytemp;
102       }
103     }
104   }
105 }
sgbmv_copy(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,const float * AB,int lda,float * y,int row)106 void sgbmv_copy(enum blas_order_type order, enum blas_trans_type trans, int m,
107 		int n, int kl, int ku, const float *AB, int lda, float *y,
108 		int row)
109 {
110   int i, j, iy;
111   int max_mn;
112   const float *AB_i = AB;
113   float *y_i = y;
114   float ytemp;
115   int inc = 1;
116 
117   row++;
118 
119   max_mn = MAX(m, n);
120 
121   for (i = 0, iy = 0; i < max_mn; i++, iy += inc) {
122     y_i[iy] = 0.0;
123   }
124 
125   if (trans == blas_no_trans) {
126     if (order == blas_colmajor) {
127       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
128 	ytemp = AB_i[(ku + row - j + lda * (j - 1)) * inc];
129 	y_i[(j - 1) * inc] = ytemp;
130       }
131     } else {
132       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
133 	ytemp = AB_i[((row - 1) * lda + kl + j - row) * inc];
134 	y_i[(j - 1) * inc] = ytemp;
135       }
136     }
137   } else {
138     if (order == blas_colmajor) {
139       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
140 	ytemp = AB_i[((ku + i - row) + lda * (row - 1)) * inc];
141 	y_i[(i - 1) * inc] = ytemp;
142       }
143     } else {
144       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
145 	ytemp = AB_i[((i - 1) * lda + kl - i + row) * inc];
146 	y_i[(i - 1) * inc] = ytemp;
147       }
148     }
149   }
150 }
151 
cgbmv_prepare(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,void * AB,int lda,void * y,int row,int * nfix2,int * nmix,int * ysize)152 void cgbmv_prepare(enum blas_order_type order, enum blas_trans_type trans,
153 		   int m, int n, int kl, int ku, void *AB, int lda, void *y,
154 		   int row, int *nfix2, int *nmix, int *ysize)
155 {
156   int ra, la, i, iy;
157   int n_i;
158   int inc = 1;
159   float *y_i = (float *) y;
160   if ((order == blas_colmajor) && (trans == blas_no_trans)) {
161     ra = ku;
162     la = kl;
163   } else if ((order == blas_colmajor) && (trans == blas_trans)) {
164     ra = kl;
165     la = ku;
166   } else if ((order == blas_rowmajor) && (trans == blas_no_trans)) {
167     ra = ku;
168     la = kl;
169   } else {			/* rowmajor and blas_trans */
170     ra = kl;
171     la = ku;
172   }
173 
174   if (trans == blas_no_trans)
175     n_i = n;
176   else
177     n_i = m;
178 
179   /* DETERMINE SIZE OF VECTOR TO BE SUBMITTED TO TESTGEN */
180 
181   if (row + ra + 1 < n_i) {
182     *ysize = ra + row + 1;
183   } else {
184     *ysize = n_i;
185   }
186 
187   /* SET NMIX AND NFIX */
188   if (row == 0) {
189     *nmix = 0;
190     *nfix2 = 0;
191   } else {
192     if (row > la) {
193       *nfix2 = row - la;
194     } else {
195       *nfix2 = 0;
196     }
197     if (*nfix2 > n_i)
198       *nfix2 = n_i;
199     if (row <= n_i - ra - 1) {
200       *nmix = (*ysize) - (*nfix2) - 1;
201     } else {
202       *nmix = (*ysize) - (*nfix2);
203     }
204   }
205 
206   /* SET ALL VALUES OF Y TO  = 0.0; */
207   inc *= 2;
208   for (i = 0, iy = 0; i < *ysize; i++, iy += inc) {
209     y_i[iy] = 0.0;
210     y_i[iy + 1] = 0.0;
211   }
212 }
cgbmv_commit(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,void * AB,int lda,void * y,int row)213 void cgbmv_commit(enum blas_order_type order, enum blas_trans_type trans,
214 		  int m, int n, int kl, int ku, void *AB, int lda, void *y,
215 		  int row)
216 {
217   int i, j;
218   float *AB_i = (float *) AB;
219   float *y_i = (float *) y;
220   float ytemp[2];
221   int inc = 1;
222 
223   row++;
224   inc *= 2;
225 
226   if (trans == blas_no_trans) {
227     if (order == blas_colmajor) {
228       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
229 	ytemp[0] = y_i[(j - 1) * inc];
230 	ytemp[1] = y_i[(j - 1) * inc + 1];
231 	AB_i[(ku + row - j + lda * (j - 1)) * inc] = ytemp[0];
232 	AB_i[(ku + row - j + lda * (j - 1)) * inc + 1] = ytemp[1];
233       }
234     } else {
235       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
236 	ytemp[0] = y_i[(j - 1) * inc];
237 	ytemp[1] = y_i[(j - 1) * inc + 1];
238 	AB_i[((row - 1) * lda + kl + j - row) * inc] = ytemp[0];
239 	AB_i[((row - 1) * lda + kl + j - row) * inc + 1] = ytemp[1];
240       }
241     }
242   } else {
243     if (order == blas_colmajor) {
244       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
245 	ytemp[0] = y_i[(i - 1) * inc];
246 	ytemp[1] = y_i[(i - 1) * inc + 1];
247 	AB_i[(ku + i - row + lda * (row - 1)) * inc] = ytemp[0];
248 	AB_i[(ku + i - row + lda * (row - 1)) * inc + 1] = ytemp[1];
249       }
250     } else {
251       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
252 	ytemp[0] = y_i[(i - 1) * inc];
253 	ytemp[1] = y_i[(i - 1) * inc + 1];
254 	AB_i[((i - 1) * lda + kl - i + row) * inc] = ytemp[0];
255 	AB_i[((i - 1) * lda + kl - i + row) * inc + 1] = ytemp[1];
256       }
257     }
258   }
259 }
cgbmv_copy(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,const void * AB,int lda,void * y,int row)260 void cgbmv_copy(enum blas_order_type order, enum blas_trans_type trans, int m,
261 		int n, int kl, int ku, const void *AB, int lda, void *y,
262 		int row)
263 {
264   int i, j, iy;
265   int max_mn;
266   const float *AB_i = (float *) AB;
267   float *y_i = (float *) y;
268   float ytemp[2];
269   int inc = 1;
270 
271   row++;
272   inc *= 2;
273   max_mn = MAX(m, n);
274 
275   for (i = 0, iy = 0; i < max_mn; i++, iy += inc) {
276     y_i[iy] = 0.0;
277     y_i[iy + 1] = 0.0;
278   }
279 
280   if (trans == blas_no_trans) {
281     if (order == blas_colmajor) {
282       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
283 	ytemp[0] = AB_i[(ku + row - j + lda * (j - 1)) * inc];
284 	ytemp[1] = AB_i[(ku + row - j + lda * (j - 1)) * inc + 1];
285 	y_i[(j - 1) * inc] = ytemp[0];
286 	y_i[(j - 1) * inc + 1] = ytemp[1];
287       }
288     } else {
289       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
290 	ytemp[0] = AB_i[((row - 1) * lda + kl + j - row) * inc];
291 	ytemp[1] = AB_i[((row - 1) * lda + kl + j - row) * inc + 1];
292 	y_i[(j - 1) * inc] = ytemp[0];
293 	y_i[(j - 1) * inc + 1] = ytemp[1];
294       }
295     }
296   } else {
297     if (order == blas_colmajor) {
298       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
299 	ytemp[0] = AB_i[((ku + i - row) + lda * (row - 1)) * inc];
300 	ytemp[1] = AB_i[((ku + i - row) + lda * (row - 1)) * inc + 1];
301 	y_i[(i - 1) * inc] = ytemp[0];
302 	y_i[(i - 1) * inc + 1] = ytemp[1];
303       }
304     } else {
305       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
306 	ytemp[0] = AB_i[((i - 1) * lda + kl - i + row) * inc];
307 	ytemp[1] = AB_i[((i - 1) * lda + kl - i + row) * inc + 1];
308 	y_i[(i - 1) * inc] = ytemp[0];
309 	y_i[(i - 1) * inc + 1] = ytemp[1];
310       }
311     }
312   }
313 }
314 
dgbmv_prepare(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,double * AB,int lda,double * y,int row,int * nfix2,int * nmix,int * ysize)315 void dgbmv_prepare(enum blas_order_type order, enum blas_trans_type trans,
316 		   int m, int n, int kl, int ku, double *AB, int lda,
317 		   double *y, int row, int *nfix2, int *nmix, int *ysize)
318 {
319   int ra, la, i, iy;
320   int n_i;
321   int inc = 1;
322   double *y_i = y;
323   if ((order == blas_colmajor) && (trans == blas_no_trans)) {
324     ra = ku;
325     la = kl;
326   } else if ((order == blas_colmajor) && (trans == blas_trans)) {
327     ra = kl;
328     la = ku;
329   } else if ((order == blas_rowmajor) && (trans == blas_no_trans)) {
330     ra = ku;
331     la = kl;
332   } else {			/* rowmajor and blas_trans */
333     ra = kl;
334     la = ku;
335   }
336 
337   if (trans == blas_no_trans)
338     n_i = n;
339   else
340     n_i = m;
341 
342   /* DETERMINE SIZE OF VECTOR TO BE SUBMITTED TO TESTGEN */
343 
344   if (row + ra + 1 < n_i) {
345     *ysize = ra + row + 1;
346   } else {
347     *ysize = n_i;
348   }
349 
350   /* SET NMIX AND NFIX */
351   if (row == 0) {
352     *nmix = 0;
353     *nfix2 = 0;
354   } else {
355     if (row > la) {
356       *nfix2 = row - la;
357     } else {
358       *nfix2 = 0;
359     }
360     if (*nfix2 > n_i)
361       *nfix2 = n_i;
362     if (row <= n_i - ra - 1) {
363       *nmix = (*ysize) - (*nfix2) - 1;
364     } else {
365       *nmix = (*ysize) - (*nfix2);
366     }
367   }
368 
369   /* SET ALL VALUES OF Y TO  = 0.0; */
370 
371   for (i = 0, iy = 0; i < *ysize; i++, iy += inc) {
372     y_i[iy] = 0.0;
373   }
374 }
dgbmv_commit(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,double * AB,int lda,double * y,int row)375 void dgbmv_commit(enum blas_order_type order, enum blas_trans_type trans,
376 		  int m, int n, int kl, int ku, double *AB, int lda,
377 		  double *y, int row)
378 {
379   int i, j;
380   double *AB_i = AB;
381   double *y_i = y;
382   double ytemp;
383   int inc = 1;
384 
385   row++;
386 
387 
388   if (trans == blas_no_trans) {
389     if (order == blas_colmajor) {
390       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
391 	ytemp = y_i[(j - 1) * inc];
392 	AB_i[(ku + row - j + lda * (j - 1)) * inc] = ytemp;
393       }
394     } else {
395       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
396 	ytemp = y_i[(j - 1) * inc];
397 	AB_i[((row - 1) * lda + kl + j - row) * inc] = ytemp;
398       }
399     }
400   } else {
401     if (order == blas_colmajor) {
402       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
403 	ytemp = y_i[(i - 1) * inc];
404 	AB_i[(ku + i - row + lda * (row - 1)) * inc] = ytemp;
405       }
406     } else {
407       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
408 	ytemp = y_i[(i - 1) * inc];
409 	AB_i[((i - 1) * lda + kl - i + row) * inc] = ytemp;
410       }
411     }
412   }
413 }
dgbmv_copy(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,const double * AB,int lda,double * y,int row)414 void dgbmv_copy(enum blas_order_type order, enum blas_trans_type trans, int m,
415 		int n, int kl, int ku, const double *AB, int lda, double *y,
416 		int row)
417 {
418   int i, j, iy;
419   int max_mn;
420   const double *AB_i = AB;
421   double *y_i = y;
422   double ytemp;
423   int inc = 1;
424 
425   row++;
426 
427   max_mn = MAX(m, n);
428 
429   for (i = 0, iy = 0; i < max_mn; i++, iy += inc) {
430     y_i[iy] = 0.0;
431   }
432 
433   if (trans == blas_no_trans) {
434     if (order == blas_colmajor) {
435       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
436 	ytemp = AB_i[(ku + row - j + lda * (j - 1)) * inc];
437 	y_i[(j - 1) * inc] = ytemp;
438       }
439     } else {
440       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
441 	ytemp = AB_i[((row - 1) * lda + kl + j - row) * inc];
442 	y_i[(j - 1) * inc] = ytemp;
443       }
444     }
445   } else {
446     if (order == blas_colmajor) {
447       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
448 	ytemp = AB_i[((ku + i - row) + lda * (row - 1)) * inc];
449 	y_i[(i - 1) * inc] = ytemp;
450       }
451     } else {
452       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
453 	ytemp = AB_i[((i - 1) * lda + kl - i + row) * inc];
454 	y_i[(i - 1) * inc] = ytemp;
455       }
456     }
457   }
458 }
459 
zgbmv_prepare(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,void * AB,int lda,void * y,int row,int * nfix2,int * nmix,int * ysize)460 void zgbmv_prepare(enum blas_order_type order, enum blas_trans_type trans,
461 		   int m, int n, int kl, int ku, void *AB, int lda, void *y,
462 		   int row, int *nfix2, int *nmix, int *ysize)
463 {
464   int ra, la, i, iy;
465   int n_i;
466   int inc = 1;
467   double *y_i = (double *) y;
468   if ((order == blas_colmajor) && (trans == blas_no_trans)) {
469     ra = ku;
470     la = kl;
471   } else if ((order == blas_colmajor) && (trans == blas_trans)) {
472     ra = kl;
473     la = ku;
474   } else if ((order == blas_rowmajor) && (trans == blas_no_trans)) {
475     ra = ku;
476     la = kl;
477   } else {			/* rowmajor and blas_trans */
478     ra = kl;
479     la = ku;
480   }
481 
482   if (trans == blas_no_trans)
483     n_i = n;
484   else
485     n_i = m;
486 
487   /* DETERMINE SIZE OF VECTOR TO BE SUBMITTED TO TESTGEN */
488 
489   if (row + ra + 1 < n_i) {
490     *ysize = ra + row + 1;
491   } else {
492     *ysize = n_i;
493   }
494 
495   /* SET NMIX AND NFIX */
496   if (row == 0) {
497     *nmix = 0;
498     *nfix2 = 0;
499   } else {
500     if (row > la) {
501       *nfix2 = row - la;
502     } else {
503       *nfix2 = 0;
504     }
505     if (*nfix2 > n_i)
506       *nfix2 = n_i;
507     if (row <= n_i - ra - 1) {
508       *nmix = (*ysize) - (*nfix2) - 1;
509     } else {
510       *nmix = (*ysize) - (*nfix2);
511     }
512   }
513 
514   /* SET ALL VALUES OF Y TO  = 0.0; */
515   inc *= 2;
516   for (i = 0, iy = 0; i < *ysize; i++, iy += inc) {
517     y_i[iy] = 0.0;
518     y_i[iy + 1] = 0.0;
519   }
520 }
zgbmv_commit(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,void * AB,int lda,void * y,int row)521 void zgbmv_commit(enum blas_order_type order, enum blas_trans_type trans,
522 		  int m, int n, int kl, int ku, void *AB, int lda, void *y,
523 		  int row)
524 {
525   int i, j;
526   double *AB_i = (double *) AB;
527   double *y_i = (double *) y;
528   double ytemp[2];
529   int inc = 1;
530 
531   row++;
532   inc *= 2;
533 
534   if (trans == blas_no_trans) {
535     if (order == blas_colmajor) {
536       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
537 	ytemp[0] = y_i[(j - 1) * inc];
538 	ytemp[1] = y_i[(j - 1) * inc + 1];
539 	AB_i[(ku + row - j + lda * (j - 1)) * inc] = ytemp[0];
540 	AB_i[(ku + row - j + lda * (j - 1)) * inc + 1] = ytemp[1];
541       }
542     } else {
543       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
544 	ytemp[0] = y_i[(j - 1) * inc];
545 	ytemp[1] = y_i[(j - 1) * inc + 1];
546 	AB_i[((row - 1) * lda + kl + j - row) * inc] = ytemp[0];
547 	AB_i[((row - 1) * lda + kl + j - row) * inc + 1] = ytemp[1];
548       }
549     }
550   } else {
551     if (order == blas_colmajor) {
552       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
553 	ytemp[0] = y_i[(i - 1) * inc];
554 	ytemp[1] = y_i[(i - 1) * inc + 1];
555 	AB_i[(ku + i - row + lda * (row - 1)) * inc] = ytemp[0];
556 	AB_i[(ku + i - row + lda * (row - 1)) * inc + 1] = ytemp[1];
557       }
558     } else {
559       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
560 	ytemp[0] = y_i[(i - 1) * inc];
561 	ytemp[1] = y_i[(i - 1) * inc + 1];
562 	AB_i[((i - 1) * lda + kl - i + row) * inc] = ytemp[0];
563 	AB_i[((i - 1) * lda + kl - i + row) * inc + 1] = ytemp[1];
564       }
565     }
566   }
567 }
zgbmv_copy(enum blas_order_type order,enum blas_trans_type trans,int m,int n,int kl,int ku,const void * AB,int lda,void * y,int row)568 void zgbmv_copy(enum blas_order_type order, enum blas_trans_type trans, int m,
569 		int n, int kl, int ku, const void *AB, int lda, void *y,
570 		int row)
571 {
572   int i, j, iy;
573   int max_mn;
574   const double *AB_i = (double *) AB;
575   double *y_i = (double *) y;
576   double ytemp[2];
577   int inc = 1;
578 
579   row++;
580   inc *= 2;
581   max_mn = MAX(m, n);
582 
583   for (i = 0, iy = 0; i < max_mn; i++, iy += inc) {
584     y_i[iy] = 0.0;
585     y_i[iy + 1] = 0.0;
586   }
587 
588   if (trans == blas_no_trans) {
589     if (order == blas_colmajor) {
590       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
591 	ytemp[0] = AB_i[(ku + row - j + lda * (j - 1)) * inc];
592 	ytemp[1] = AB_i[(ku + row - j + lda * (j - 1)) * inc + 1];
593 	y_i[(j - 1) * inc] = ytemp[0];
594 	y_i[(j - 1) * inc + 1] = ytemp[1];
595       }
596     } else {
597       for (j = MAX(1, row - kl); j <= MIN(n, row + ku); j++) {
598 	ytemp[0] = AB_i[((row - 1) * lda + kl + j - row) * inc];
599 	ytemp[1] = AB_i[((row - 1) * lda + kl + j - row) * inc + 1];
600 	y_i[(j - 1) * inc] = ytemp[0];
601 	y_i[(j - 1) * inc + 1] = ytemp[1];
602       }
603     }
604   } else {
605     if (order == blas_colmajor) {
606       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
607 	ytemp[0] = AB_i[((ku + i - row) + lda * (row - 1)) * inc];
608 	ytemp[1] = AB_i[((ku + i - row) + lda * (row - 1)) * inc + 1];
609 	y_i[(i - 1) * inc] = ytemp[0];
610 	y_i[(i - 1) * inc + 1] = ytemp[1];
611       }
612     } else {
613       for (i = MAX(1, row - ku); i <= MIN(m, row + kl); i++) {
614 	ytemp[0] = AB_i[((i - 1) * lda + kl - i + row) * inc];
615 	ytemp[1] = AB_i[((i - 1) * lda + kl - i + row) * inc + 1];
616 	y_i[(i - 1) * inc] = ytemp[0];
617 	y_i[(i - 1) * inc + 1] = ytemp[1];
618       }
619     }
620   }
621 }
622