42{
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249 Int Acol, Arow, Aii, Aimb1, Ainb1, Ajj, Ald, Amp, Amb, Anb, Anq,
250 Aoffi, Aoffj, Arcol, Arrow, GoEast, GoSouth, IsColRepl,
251 IsRowRepl, Xinc, Yinc, XYii=0, XYjj=0, XYoffi=-1, XYoffj=-1,
252 XisRow, iimax, ilow, imbloc, inbloc, ioffd, ioffxy, iupp,
253 jjmax, joffd, joffxy, lcmt, lcmt00, lmbloc, lnbloc, low,
254 lower, m1, mbloc, mblkd, mblks, mycol, myrow, n1, nbloc,
255 nblkd, nblks, npcol, nprow, pmb, qnb, size, tmp1, upp, upper;
256
257
258
259
260
261
262
263 if( N <= 0 ) return;
264
265
266
268
269
270
271 PB_Cainfog2l( N, N, IA, JA, DESCA, nprow, npcol, myrow, mycol, &Aimb1,
272 &Ainb1, &Amp, &Anq, &Aii, &Ajj, &Arow, &Acol, &Arrow, &Arcol );
273
274
275
276
277 if( ( Amp <= 0 ) || ( Anq <= 0 ) ) return;
278
279 IsRowRepl = ( ( Arow < 0 ) || ( nprow == 1 ) );
280 IsColRepl = ( ( Acol < 0 ) || ( npcol == 1 ) );
281 Amb = DESCA[
MB_ ]; Anb = DESCA[
NB_ ]; Ald = DESCA[
LLD_ ];
283
284 if( IsRowRepl && IsColRepl )
285 {
286 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, Amp, Anq, K, 0, ALPHA,
287 Mptr( A, Aii, Ajj, Ald, size ), Ald, X, LDX, Y, LDY );
288 return;
289 }
290
292 {
294 { XisRow = 1; Xinc = LDX * size; Yinc = UTYP->
size; }
295 else { XisRow = 0; Xinc = size; Yinc = LDY * UTYP->
size; }
296 }
297 else
298 {
300 { XisRow = 0; Xinc = size; Yinc = LDY * UTYP->
size; }
301 else { XisRow = 1; Xinc = LDX * size; Yinc = UTYP->
size; }
302 }
305
306
307
308
309 PB_Cbinfo( 0, Amp, Anq, Aimb1, Ainb1, Amb, Anb, Arrow, Arcol, &lcmt00,
310 &mblks, &nblks, &imbloc, &inbloc, &lmbloc, &lnbloc, &ilow, &low,
311 &iupp, &upp );
312
313 iimax = ( Aoffi = Aii - 1 ) + ( m1 = Amp );
314 jjmax = ( Aoffj = Ajj - 1 ) + ( n1 = Anq );
315 pmb = ( IsRowRepl ? Amb : nprow * Amb );
316 qnb = ( IsColRepl ? Anb : npcol * Anb );
317
318
319
320
321
322 GoSouth = ( lcmt00 > iupp );
323 GoEast = ( lcmt00 < ilow );
324
325 if( XisRow )
326 {
327
328
329
330 if( ( !( GoSouth ) ) && ( !( GoEast ) ) )
331 {
332
333
334
335 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, imbloc, inbloc, K, lcmt00, ALPHA,
336 Mptr( A, Aii, Ajj, Ald, size ), Ald, X+XYjj*Xinc, LDX,
337 Y+XYii*Yinc, LDY );
338
339
340
341
342
343 GoSouth = !( GoEast = ( ( lcmt00 - ( iupp - upp + pmb ) ) < ilow ) );
344
345 if( GoSouth )
346 {
347
348
349
350
351
352 if( upper && ( Anq > inbloc ) )
353 {
354 tmp1 = Anq - inbloc;
355 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, imbloc, tmp1, K, 0, ALPHA,
356 Mptr( A, Aii, Ajj+inbloc, Ald, size ), Ald,
357 X+(XYjj+inbloc)*Xinc, LDX, Y+XYii*Yinc, LDY );
358 }
359 Aii += imbloc; XYii += imbloc; m1 -= imbloc;
360 }
361 else
362 {
363
364
365
366
367
368 if( lower && ( Amp > imbloc ) )
369 {
370 tmp1 = Amp - imbloc;
371 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, inbloc, K, 0, ALPHA,
372 Mptr( A, Aii+imbloc, Ajj, Ald, size ), Ald, X+XYjj*Xinc,
373 LDX, Y+(XYii+imbloc)*Yinc, LDY );
374 }
375 Ajj += inbloc; XYjj += inbloc; n1 -= inbloc;
376 }
377 }
378
379 if( GoSouth )
380 {
381
382
383
384
385 lcmt00 -= ( iupp - upp + pmb ); mblks--;
386 Aoffi += imbloc; XYoffi += imbloc;
387
388
389
390
391 while( ( mblks > 0 ) && ( lcmt00 > upp ) )
392 { lcmt00 -= pmb; mblks--; Aoffi += Amb; XYoffi += Amb; }
393
394
395
396
397 tmp1 =
MIN( Aoffi, iimax ) - Aii + 1;
398 if( upper && ( tmp1 > 0 ) )
399 {
400 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
401 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+(XYoffj+1)*Xinc,
402 LDX, Y+XYii*Yinc, LDY );
403 Aii += tmp1; XYii += tmp1; m1 -= tmp1;
404 }
405
406
407
408 if( mblks <= 0 ) return;
409
410
411
412
413
414
415 lcmt = lcmt00; mblkd = mblks; ioffd = Aoffi; ioffxy = XYoffi;
416
417 mbloc = Amb;
418 while( ( mblkd > 0 ) && ( lcmt >= ilow ) )
419 {
420
421
422
423 if( mblkd == 1 ) mbloc = lmbloc;
424 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, mbloc, inbloc, K, lcmt,
425 ALPHA,
Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
426 X+(XYoffj+1)*Xinc, LDX, Y+(ioffxy+1)*Yinc, LDY );
427 lcmt00 = lcmt; lcmt -= pmb;
428 mblks = mblkd; mblkd--;
429 Aoffi = ioffd; XYoffi = ioffxy;
430 ioffd += mbloc; ioffxy += mbloc;
431 }
432
433
434
435 tmp1 = m1 - ioffd + Aii - 1;
436 if( lower && ( tmp1 > 0 ) )
437 {
438 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, inbloc, K, 0, ALPHA,
439 Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
440 X+(XYoffj+1)*Xinc, LDX, Y+(ioffxy+1)*Yinc, LDY );
441 }
442 tmp1 = Aoffi - Aii + 1;
443 m1 -= tmp1;
444 n1 -= inbloc;
445 lcmt00 += low - ilow + qnb;
446 nblks--;
447 Aoffj += inbloc;
448 XYoffj += inbloc;
449
450
451
452 if( upper && ( tmp1 > 0 ) && ( n1 > 0 ) )
453 {
454 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
455 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+(XYoffj+1)*Xinc,
456 LDX, Y+XYii*Yinc, LDY );
457 }
458 Aii = Aoffi + 1; Ajj = Aoffj + 1;
459 XYii = XYoffi + 1; XYjj = XYoffj + 1;
460 }
461 else if( GoEast )
462 {
463
464
465
466
467 lcmt00 += low - ilow + qnb; nblks--;
468 Aoffj += inbloc; XYoffj += inbloc;
469
470
471
472
473 while( ( nblks > 0 ) && ( lcmt00 < low ) )
474 { lcmt00 += qnb; nblks--; Aoffj += Anb; XYoffj += Anb; }
475
476
477
478 tmp1 =
MIN( Aoffj, jjmax ) - Ajj + 1;
479 if( lower && ( tmp1 > 0 ) )
480 {
481 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, m1, tmp1, K, 0, ALPHA,
482 Mptr( A, Aii, Ajj, Ald, size ), Ald, X+XYjj*Xinc, LDX,
483 Y+XYii*Yinc, LDY );
484 Ajj += tmp1; XYjj += tmp1; n1 -= tmp1;
485 }
486
487
488
489 if( nblks <= 0 ) return;
490
491
492
493
494
495
496 lcmt = lcmt00; nblkd = nblks; joffd = Aoffj; joffxy = XYoffj;
497
498 nbloc = Anb;
499 while( ( nblkd > 0 ) && ( lcmt <= iupp ) )
500 {
501
502
503
504 if( nblkd == 1 ) nbloc = lnbloc;
505 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, imbloc, nbloc, K, lcmt,
506 ALPHA,
Mptr( A, Aii, joffd+1, Ald, size ), Ald,
507 X+(joffxy+1)*Xinc, LDX, Y+XYii*Yinc, LDY );
508 lcmt00 = lcmt; lcmt += qnb;
509 nblks = nblkd; nblkd--;
510 Aoffj = joffd; XYoffj = joffxy;
511 joffd += nbloc; joffxy += nbloc;
512 }
513
514
515
516 tmp1 = n1 - joffd + Ajj - 1;
517 if( upper && ( tmp1 > 0 ) )
518 {
519 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, imbloc, tmp1, K, 0, ALPHA,
520 Mptr( A, Aii, joffd+1, Ald, size ), Ald, X+(joffxy+1)*Xinc,
521 LDX, Y+XYii*Yinc, LDY );
522 }
523 tmp1 = Aoffj - Ajj + 1;
524 m1 -= imbloc;
525 n1 -= tmp1;
526 lcmt00 -= ( iupp - upp + pmb );
527 mblks--;
528 Aoffi += imbloc;
529 XYoffi += imbloc;
530
531
532
533 if( lower && ( m1 > 0 ) && ( tmp1 > 0 ) )
534 {
535 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, m1, tmp1, K, 0, ALPHA,
536 Mptr( A, Aoffi+1, Ajj, Ald, size ), Ald, X+XYjj*Xinc, LDX,
537 Y+(XYoffi+1)*Yinc, LDY );
538 }
539 Aii = Aoffi + 1; Ajj = Aoffj + 1;
540 XYii = XYoffi + 1; XYjj = XYoffj + 1;
541 }
542
543
544
545 nbloc = Anb;
546 while( nblks > 0 )
547 {
548 if( nblks == 1 ) nbloc = lnbloc;
549
550
551
552
553 while( ( mblks > 0 ) && ( lcmt00 > upp ) )
554 { lcmt00 -= pmb; mblks--; Aoffi += Amb; XYoffi += Amb; }
555
556
557
558 tmp1 =
MIN( Aoffi, iimax ) - Aii + 1;
559 if( upper && ( tmp1 > 0 ) )
560 {
561 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
562 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+(XYoffj+1)*Xinc,
563 LDX, Y+XYii*Yinc, LDY );
564 Aii += tmp1;
565 XYii += tmp1;
566 m1 -= tmp1;
567 }
568
569
570
571 if( mblks <= 0 ) return;
572
573
574
575
576
577
578 lcmt = lcmt00; mblkd = mblks; ioffd = Aoffi; ioffxy = XYoffi;
579
580 mbloc = Amb;
581 while( ( mblkd > 0 ) && ( lcmt >= low ) )
582 {
583
584
585
586 if( mblkd == 1 ) mbloc = lmbloc;
587 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, mbloc, nbloc, K, lcmt,
588 ALPHA,
Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
589 X+(XYoffj+1)*Xinc, LDX, Y+(ioffxy+1)*Yinc, LDY );
590 lcmt00 = lcmt; lcmt -= pmb;
591 mblks = mblkd; mblkd--;
592 Aoffi = ioffd; XYoffi = ioffxy;
593 ioffd += mbloc; ioffxy += mbloc;
594 }
595
596
597
598 tmp1 = m1 - ioffd + Aii - 1;
599 if( lower && ( tmp1 > 0 ) )
600 {
601 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, nbloc, K, 0, ALPHA,
602 Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
603 X+(XYoffj+1)*Xinc, LDX, Y+(ioffxy+1)*Yinc, LDY );
604 }
605
606 tmp1 =
MIN( Aoffi, iimax ) - Aii + 1;
607 m1 -= tmp1;
608 n1 -= nbloc;
609 lcmt00 += qnb;
610 nblks--;
611 Aoffj += nbloc;
612 XYoffj += nbloc;
613
614
615
616 if( upper && ( tmp1 > 0 ) && ( n1 > 0 ) )
617 {
618 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
619 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+(XYoffj+1)*Xinc,
620 LDX, Y+XYii*Yinc, LDY );
621 }
622 Aii = Aoffi + 1; Ajj = Aoffj + 1;
623 XYii = XYoffi + 1; XYjj = XYoffj + 1;
624 }
625 }
626 else
627 {
628
629
630
631 if( ( !( GoSouth ) ) && ( !( GoEast ) ) )
632 {
633
634
635
636 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, imbloc, inbloc, K, lcmt00, ALPHA,
637 Mptr( A, Aii, Ajj, Ald, size ), Ald, X+XYii*Xinc, LDX,
638 Y+XYjj*Yinc, LDY );
639
640
641
642
643
644 GoSouth = !( GoEast = ( ( lcmt00 - ( iupp - upp + pmb ) ) < ilow ) );
645
646 if( GoSouth )
647 {
648
649
650
651
652
653 if( upper && ( Anq > inbloc ) )
654 {
655 tmp1 = Anq - inbloc;
656 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, imbloc, tmp1, K, 0, ALPHA,
657 Mptr( A, Aii, Ajj+inbloc, Ald, size ), Ald, X+XYii*Xinc,
658 LDX, Y+(XYjj+inbloc)*Yinc, LDY );
659 }
660 Aii += imbloc; XYii += imbloc; m1 -= imbloc;
661 }
662 else
663 {
664
665
666
667
668
669 if( lower && ( Amp > imbloc ) )
670 {
671 tmp1 = Amp - imbloc;
672 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, inbloc, K, 0, ALPHA,
673 Mptr( A, Aii+imbloc, Ajj, Ald, size ), Ald,
674 X+(XYii+imbloc)*Xinc, LDX, Y+XYjj*Yinc, LDY );
675 }
676 Ajj += inbloc; XYjj += inbloc; n1 -= inbloc;
677 }
678 }
679
680 if( GoSouth )
681 {
682
683
684
685
686 lcmt00 -= ( iupp - upp + pmb ); mblks--;
687 Aoffi += imbloc; XYoffi += imbloc;
688
689
690
691
692 while( ( mblks > 0 ) && ( lcmt00 > upp ) )
693 { lcmt00 -= pmb; mblks--; Aoffi += Amb; XYoffi += Amb; }
694
695
696
697
698 tmp1 =
MIN( Aoffi, iimax ) - Aii + 1;
699 if( upper && ( tmp1 > 0 ) )
700 {
701 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
702 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+XYii*Xinc, LDX,
703 Y+(XYoffj+1)*Yinc, LDY );
704 Aii += tmp1; XYii += tmp1; m1 -= tmp1;
705 }
706
707
708
709 if( mblks <= 0 ) return;
710
711
712
713
714
715
716 lcmt = lcmt00; mblkd = mblks; ioffd = Aoffi; ioffxy = XYoffi;
717
718 mbloc = Amb;
719 while( ( mblkd > 0 ) && ( lcmt >= ilow ) )
720 {
721
722
723
724 if( mblkd == 1 ) mbloc = lmbloc;
725 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, mbloc, inbloc, K, lcmt,
726 ALPHA,
Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
727 X+(ioffxy+1)*Xinc, LDX, Y+(XYoffj+1)*Yinc, LDY );
728 lcmt00 = lcmt; lcmt -= pmb;
729 mblks = mblkd; mblkd--;
730 Aoffi = ioffd; XYoffi = ioffxy;
731 ioffd += mbloc; ioffxy += mbloc;
732 }
733
734
735
736 tmp1 = m1 - ioffd + Aii - 1;
737 if( lower && ( tmp1 > 0 ) )
738 {
739 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, inbloc, K, 0, ALPHA,
740 Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
741 X+(ioffxy+1)*Xinc, LDX, Y+(XYoffj+1)*Yinc, LDY );
742 }
743 tmp1 = Aoffi - Aii + 1;
744 m1 -= tmp1;
745 n1 -= inbloc;
746 lcmt00 += low - ilow + qnb;
747 nblks--;
748 Aoffj += inbloc;
749 XYoffj += inbloc;
750
751
752
753 if( upper && ( tmp1 > 0 ) && ( n1 > 0 ) )
754 {
755 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
756 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+XYii*Xinc, LDX,
757 Y+(XYoffj+1)*Yinc, LDY );
758 }
759 Aii = Aoffi + 1; Ajj = Aoffj + 1;
760 XYii = XYoffi + 1; XYjj = XYoffj + 1;
761 }
762 else if( GoEast )
763 {
764
765
766
767
768 lcmt00 += low - ilow + qnb; nblks--;
769 Aoffj += inbloc; XYoffj += inbloc;
770
771
772
773
774 while( ( nblks > 0 ) && ( lcmt00 < low ) )
775 { lcmt00 += qnb; nblks--; Aoffj += Anb; XYoffj += Anb; }
776
777
778
779 tmp1 =
MIN( Aoffj, jjmax ) - Ajj + 1;
780 if( lower && ( tmp1 > 0 ) )
781 {
782 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, m1, tmp1, K, 0, ALPHA,
783 Mptr( A, Aii, Ajj, Ald, size ), Ald, X+XYii*Xinc, LDX,
784 Y+XYjj*Yinc, LDY );
785 Ajj += tmp1; XYjj += tmp1; n1 -= tmp1;
786 }
787
788
789
790 if( nblks <= 0 ) return;
791
792
793
794
795
796
797 lcmt = lcmt00; nblkd = nblks; joffd = Aoffj; joffxy = XYoffj;
798
799 nbloc = Anb;
800 while( ( nblkd > 0 ) && ( lcmt <= iupp ) )
801 {
802
803
804
805 if( nblkd == 1 ) nbloc = lnbloc;
806 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, imbloc, nbloc, K, lcmt,
807 ALPHA,
Mptr( A, Aii, joffd+1, Ald, size ), Ald, X+XYii*Xinc,
808 LDX, Y+(joffxy+1)*Yinc, LDY );
809 lcmt00 = lcmt; lcmt += qnb;
810 nblks = nblkd; nblkd--;
811 Aoffj = joffd; XYoffj = joffxy;
812 joffd += nbloc; joffxy += nbloc;
813 }
814
815
816
817 tmp1 = n1 - joffd + Ajj - 1;
818 if( upper && ( tmp1 > 0 ) )
819 {
820 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, imbloc, tmp1, K, 0, ALPHA,
821 Mptr( A, Aii, joffd+1, Ald, size ), Ald, X+XYii*Xinc, LDX,
822 Y+(joffxy+1)*Yinc, LDY );
823 }
824 tmp1 = Aoffj - Ajj + 1;
825 m1 -= imbloc;
826 n1 -= tmp1;
827 lcmt00 -= ( iupp - upp + pmb );
828 mblks--;
829 Aoffi += imbloc;
830 XYoffi += imbloc;
831
832
833
834 if( lower && ( m1 > 0 ) && ( tmp1 > 0 ) )
835 {
836 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, m1, tmp1, K, 0, ALPHA,
837 Mptr( A, Aoffi+1, Ajj, Ald, size ), Ald, X+(XYoffi+1)*Xinc,
838 LDX, Y+XYjj*Yinc, LDY );
839 }
840 Aii = Aoffi + 1; Ajj = Aoffj + 1;
841 XYii = XYoffi + 1; XYjj = XYoffj + 1;
842 }
843
844
845
846 nbloc = Anb;
847 while( nblks > 0 )
848 {
849 if( nblks == 1 ) nbloc = lnbloc;
850
851
852
853
854 while( ( mblks > 0 ) && ( lcmt00 > upp ) )
855 { lcmt00 -= pmb; mblks--; Aoffi += Amb; XYoffi += Amb; }
856
857
858
859 tmp1 =
MIN( Aoffi, iimax ) - Aii + 1;
860 if( upper && ( tmp1 > 0 ) )
861 {
862 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
863 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+XYii*Xinc, LDX,
864 Y+(XYoffj+1)*Yinc, LDY );
865 Aii += tmp1;
866 XYii += tmp1;
867 m1 -= tmp1;
868 }
869
870
871
872 if( mblks <= 0 ) return;
873
874
875
876
877
878
879 lcmt = lcmt00; mblkd = mblks; ioffd = Aoffi; ioffxy = XYoffi;
880
881 mbloc = Amb;
882 while( ( mblkd > 0 ) && ( lcmt >= low ) )
883 {
884
885
886
887 if( mblkd == 1 ) mbloc = lmbloc;
888 TRM(
TYPE, SIDE, UPLO, TRANS, DIAG, mbloc, nbloc, K, lcmt,
889 ALPHA,
Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
890 X+(ioffxy+1)*Xinc, LDX, Y+(XYoffj+1)*Yinc, LDY );
891 lcmt00 = lcmt; lcmt -= pmb;
892 mblks = mblkd; mblkd--;
893 Aoffi = ioffd; XYoffi = ioffxy;
894 ioffd += mbloc; ioffxy += mbloc;
895 }
896
897
898
899 tmp1 = m1 - ioffd + Aii - 1;
900 if( lower && ( tmp1 > 0 ) )
901 {
902 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, nbloc, K, 0, ALPHA,
903 Mptr( A, ioffd+1, Aoffj+1, Ald, size ), Ald,
904 X+(ioffxy+1)*Xinc, LDX, Y+(XYoffj+1)*Yinc, LDY );
905 }
906
907 tmp1 =
MIN( Aoffi, iimax ) - Aii + 1;
908 m1 -= tmp1;
909 n1 -= nbloc;
910 lcmt00 += qnb;
911 nblks--;
912 Aoffj += nbloc;
913 XYoffj += nbloc;
914
915
916
917 if( upper && ( tmp1 > 0 ) && ( n1 > 0 ) )
918 {
919 TRM(
TYPE, SIDE,
ALL, TRANS, DIAG, tmp1, n1, K, 0, ALPHA,
920 Mptr( A, Aii, Aoffj+1, Ald, size ), Ald, X+XYii*Xinc, LDX,
921 Y+(XYoffj+1)*Yinc, LDY );
922 }
923 Aii = Aoffi + 1; Ajj = Aoffj + 1;
924 XYii = XYoffi + 1; XYjj = XYoffj + 1;
925 }
926 }
927
928
929
930}