41{
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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320 char * one, * talpha, * zero;
321 Int ABfwd, ABmyprocD, ABmyprocR, ABnprocsD, ABnprocsR, ABrocs,
322 Abufld, AcurrocR, Afr, AiD, AiR, AiiD, AiiR, AinbD, AinbR,
323 Ainb1D, Ainb1R, AisR, AkkR, Ald, AnbD, AnbR, AnpD, AnpR,
324 Aoff, ArocD, ArocR, AsrcR, Bbufld, BcurrocR, Bfr, BiD, BiR,
325 BiiD, BiiR, BinbD, BinbR, Binb1D, Binb1R, BisR, BkkR, Bld,
326 BnbD, BnbR, BnpD,
327 BnpR, Boff, BrocD, BrocR, BsrcR, Ccol, Cii, Cimb1,
328 Cinb1, Cjj, Clcmb, Cld, Clp, Clq, Cnq0, Cmb, Cmp, Cmp0,
329 Cnb, Cnq, Crow,
330 WACfr, WACld, WACsum, WARfr, WARld, WARsum,
331 WBCfr, WBCld, WBCsum, WBRfr, WBRld, WBRsum, Wkbb=0,
332 conjg, ctxt, k, kb, kbb, l, lb,
333 lcmb, ltmp, maxp, maxpm1, maxq, mycol, myrow, ncpq, notran,
334 npcol, npq, nprow, nrpq, p=0, q=0, size, tmp, upper;
337
338
339
343 char * Abuf = NULL, * Bbuf = NULL, * Cptr = NULL, * WAC = NULL,
344 * WAR = NULL, * WBC = NULL, * WBR = NULL;
345
346
347
348
349
350
351
353
354
355
357
359
362
363
364
365 PB_Cdescribe( N, N, IC, JC, DESCC, nprow, npcol, myrow, mycol, &Cii, &Cjj,
366 &Cld, &Cimb1, &Cinb1, &Cmb, &Cnb, &Crow, &Ccol, Cd0 );
367
368 Cmp =
PB_Cnumroc( N, 0, Cimb1, Cmb, myrow, Crow, nprow );
369 Cnq =
PB_Cnumroc( N, 0, Cinb1, Cnb, mycol, Ccol, npcol );
370
371 if( ( Cmp > 0 ) && ( Cnq > 0 ) )
372 {
373 Cptr =
Mptr( C, Cii, Cjj, Cld, size );
374
375 if( conjg )
376 {
379 }
381
382
383
384
385 Clcmb = 2 * kb *
PB_Clcm( ( Crow >= 0 ? nprow : 1 ),
386 ( Ccol >= 0 ? npcol : 1 ) );
387 }
388
389
390
392 {
393 ABnprocsR = npcol;
394 AiR = JA; AinbR = DESCA[
INB_]; AnbR = DESCA[
NB_]; AsrcR = DESCA[
CSRC_];
395 BiR = JB; BinbR = DESCB[
INB_]; BnbR = DESCB[
NB_]; BsrcR = DESCB[
CSRC_];
396 }
397 else
398 {
399 ABnprocsR = nprow;
400 AiR = IA; AinbR = DESCA[
IMB_]; AnbR = DESCA[
MB_]; AsrcR = DESCA[
RSRC_];
401 BiR = IB; BinbR = DESCB[
IMB_]; BnbR = DESCB[
MB_]; BsrcR = DESCB[
RSRC_];
402 }
403
404
405
406
407 if( !(
PB_Cspan( K, AiR, AinbR, AnbR, AsrcR, ABnprocsR ) ) &&
408 !(
PB_Cspan( K, BiR, BinbR, BnbR, BsrcR, ABnprocsR ) ) )
409 {
410
411
412
413
414 if( notran )
415 {
416 PB_CInV(
TYPE,
NOCONJG,
COLUMN, N, N, Cd0, K, A, IA, JA, DESCA,
COLUMN,
417 &WAC, WACd0, &WACfr );
418 PB_CInV(
TYPE, CONJUG,
ROW, N, N, Cd0, K, WAC, 0, 0, WACd0,
COLUMN,
419 &WAR, WARd0, &WARfr );
420
421 PB_CInV(
TYPE,
NOCONJG,
COLUMN, N, N, Cd0, K, B, IB, JB, DESCB,
COLUMN,
422 &WBC, WBCd0, &WBCfr );
423 PB_CInV(
TYPE, CONJUG,
ROW, N, N, Cd0, K, WBC, 0, 0, WBCd0,
COLUMN,
424 &WBR, WBRd0, &WBRfr );
425 }
426 else
427 {
428 PB_CInV(
TYPE,
NOCONJG,
ROW, N, N, Cd0, K, A, IA, JA, DESCA,
ROW,
429 &WAR, WARd0, &WARfr );
430 PB_CInV(
TYPE, CONJUG,
COLUMN, N, N, Cd0, K, WAR, 0, 0, WARd0,
ROW,
431 &WAC, WACd0, &WACfr );
432
433 PB_CInV(
TYPE,
NOCONJG,
ROW, N, N, Cd0, K, B, IB, JB, DESCB,
ROW,
434 &WBR, WBRd0, &WBRfr );
435 PB_CInV(
TYPE, CONJUG,
COLUMN, N, N, Cd0, K, WBR, 0, 0, WBRd0,
ROW,
436 &WBC, WBCd0, &WBCfr );
437 }
438
439
440
441 if( ( Cmp > 0 ) && ( Cnq > 0 ) )
442 {
443 WACld = WACd0[
LLD_]; WBCld = WBCd0[
LLD_];
444 WARld = WARd0[
LLD_]; WBRld = WBRd0[
LLD_];
445
447 {
448 for( l = 0; l < N; l += Clcmb )
449 {
450 lb = N - l; lb =
MIN( lb, Clcmb );
451 Clp =
PB_Cnumroc( l, 0, Cimb1, Cmb, myrow, Crow, nprow );
452 Clq =
PB_Cnumroc( l, 0, Cinb1, Cnb, mycol, Ccol, npcol );
453 Cnq0 =
PB_Cnumroc( lb, l, Cinb1, Cnb, mycol, Ccol, npcol );
454 if( Clp > 0 && Cnq0 > 0 )
455 {
457 ALPHA, WAC, &WACld,
Mptr( WBR, 0, Clq, WBRld, size ),
458 &WBRld, one,
Mptr( Cptr, 0, Clq, Cld, size ), &Cld );
460 talpha, WBC, &WBCld,
Mptr( WAR, 0, Clq, WARld, size ),
461 &WARld, one,
Mptr( Cptr, 0, Clq, Cld, size ), &Cld );
462 }
464 size ), WACld,
Mptr( WAR, 0, Clq, WARld, size ),
465 WARld,
Mptr( WBC, Clp, 0, WBCld, size ), WBCld,
466 Mptr( WBR, 0, Clq, WBRld, size ), WBRld, Cptr, l, l,
467 Cd0, tzsyr2k );
468 }
469 }
470 else
471 {
472 for( l = 0; l < N; l += Clcmb )
473 {
474 lb = N - l; ltmp = l + ( lb =
MIN( lb, Clcmb ) );
475 Clp =
PB_Cnumroc( l, 0, Cimb1, Cmb, myrow, Crow, nprow );
476 Clq =
PB_Cnumroc( l, 0, Cinb1, Cnb, mycol, Ccol, npcol );
478 size ), WACld,
Mptr( WAR, 0, Clq, WARld, size ),
479 WARld,
Mptr( WBC, Clp, 0, WBCld, size ), WBCld,
480 Mptr( WBR, 0, Clq, WBRld, size ), WBRld, Cptr, l, l,
481 Cd0, tzsyr2k );
482 Clp =
PB_Cnumroc( ltmp, 0, Cimb1, Cmb, myrow, Crow, nprow );
483 Cmp0 = Cmp - Clp;
484 Cnq0 =
PB_Cnumroc( lb, l, Cinb1, Cnb, mycol, Ccol, npcol );
485 if( Cmp0 > 0 && Cnq0 > 0 )
486 {
488 &K, ALPHA,
Mptr( WAC, Clp, 0, WACld, size ), &WACld,
489 Mptr( WBR, 0, Clq, WBRld, size ), &WBRld, one,
490 Mptr( Cptr, Clp, Clq, Cld, size ), &Cld );
492 &K, talpha,
Mptr( WBC, Clp, 0, WBCld, size ), &WBCld,
493 Mptr( WAR, 0, Clq, WARld, size ), &WARld, one,
494 Mptr( Cptr, Clp, Clq, Cld, size ), &Cld );
495 }
496 }
497 }
498 if( conjg ) free( talpha );
499 }
500
501 if( WACfr ) free( WAC );
502 if( WARfr ) free( WAR );
503 if( WBCfr ) free( WBC );
504 if( WBRfr ) free( WBR );
505
506 return;
507 }
508
509
510
513
514 if( notran )
515 {
516 ABmyprocD = myrow; ABmyprocR = mycol; ABnprocsD = nprow;
517 AiD = IA; AinbD = DESCA[
IMB_]; AnbD = DESCA[
MB_]; Ald = DESCA[
LLD_];
518 BiD = IB; BinbD = DESCB[
IMB_]; BnbD = DESCB[
MB_]; Bld = DESCB[
LLD_];
519 PB_Cinfog2l( IA, JA, DESCA, ABnprocsD, ABnprocsR, ABmyprocD, ABmyprocR,
520 &AiiD, &AiiR, &ArocD, &ArocR );
521 PB_Cinfog2l( IB, JB, DESCB, ABnprocsD, ABnprocsR, ABmyprocD, ABmyprocR,
522 &BiiD, &BiiR, &BrocD, &BrocR );
523 }
524 else
525 {
526 ABmyprocD = mycol; ABmyprocR = myrow; ABnprocsD = npcol;
527 AiD = JA; AinbD = DESCA[
INB_]; AnbD = DESCA[
NB_]; Ald = DESCA[
LLD_];
528 BiD = JB; BinbD = DESCB[
INB_]; BnbD = DESCB[
NB_]; Bld = DESCB[
LLD_];
529 PB_Cinfog2l( IA, JA, DESCA, ABnprocsR, ABnprocsD, ABmyprocR, ABmyprocD,
530 &AiiR, &AiiD, &ArocR, &ArocD );
531 PB_Cinfog2l( IB, JB, DESCB, ABnprocsR, ABnprocsD, ABmyprocR, ABmyprocD,
532 &BiiR, &BiiD, &BrocR, &BrocD );
533 }
535 AnpD =
PB_Cnumroc( N, 0, Ainb1D, AnbD, ABmyprocD, ArocD, ABnprocsD );
537 AisR = ( ( AsrcR < 0 ) || ( ABnprocsR == 1 ) );
538
540 BnpD =
PB_Cnumroc( N, 0, Binb1D, BnbD, ABmyprocD, BrocD, ABnprocsD );
542 BisR = ( ( BsrcR < 0 ) || ( ABnprocsR == 1 ) );
543
544
545
546
547 if( !( AisR ) && !( ABfwd ) )
548 {
549 tmp =
PB_Cindxg2p( K - 1, Ainb1R, AnbR, ArocR, ArocR, ABnprocsR );
550 q =
MModSub( tmp, ArocR, ABnprocsR );
551 }
552
553
554
555
556 if( !( BisR ) && !( ABfwd ) )
557 {
558 tmp =
PB_Cindxg2p( K - 1, Binb1R, BnbR, BrocR, BrocR, ABnprocsR );
559 p =
MModSub( tmp, BrocR, ABnprocsR );
560 }
561
562
563
564 PB_COutV(
TYPE,
COLUMN,
NOINIT, N, N, Cd0, kb, &WAC, WACd0, &WACfr,
565 &WACsum );
566 PB_COutV(
TYPE,
ROW,
NOINIT, N, N, Cd0, kb, &WAR, WARd0, &WARfr,
567 &WARsum );
568 PB_COutV(
TYPE,
COLUMN,
NOINIT, N, N, Cd0, kb, &WBC, WBCd0, &WBCfr,
569 &WBCsum );
570 PB_COutV(
TYPE,
ROW,
NOINIT, N, N, Cd0, kb, &WBR, WBRd0, &WBRfr,
571 &WBRsum );
572
573
574
575
576 lcmb =
PB_Clcm( ( maxp = ( BisR ? 1 : ABnprocsR ) ) * BnbR,
577 ( maxq = ( AisR ? 1 : ABnprocsR ) ) * AnbR );
578 maxpm1 = maxp - 1;
579
580
581
582 AcurrocR = ( AisR ? -1 :
MModAdd( ArocR, q, ABnprocsR ) );
583 AkkR =
PB_Cg2lrem( AiR, AinbR, AnbR, AcurrocR, AsrcR, ABnprocsR );
584 AnpR =
PB_Cnumroc( K, 0, Ainb1R, AnbR, AcurrocR, ArocR, ABnprocsR );
585
586 BcurrocR = ( BisR ? -1 :
MModAdd( BrocR, p, ABnprocsR ) );
587 BkkR =
PB_Cg2lrem( BiR, BinbR, BnbR, BcurrocR, BsrcR, ABnprocsR );
588 BnpR =
PB_Cnumroc( K, 0, Binb1R, BnbR, BcurrocR, BrocR, ABnprocsR );
589
590
591
592 PB_CVMinit( &VM, 0, BnpR, AnpR, Binb1R, Ainb1R, BnbR, AnbR, p, q,
593 maxp, maxq, lcmb );
595
596 for( k = 0; k < K; k += kb )
597 {
598 kbb = K - k; kbb =
MIN( kbb, kb );
599
600 while( Wkbb != kbb )
601 {
602
603
604
605
606 while( npq == 0 )
607 {
608 if( ( ABfwd && ( p == maxpm1 ) ) ||
609 ( !( ABfwd ) && ( p == 0 ) ) )
612
613 AcurrocR = ( AisR ? -1 :
MModAdd( ArocR, q, ABnprocsR ) );
614 AkkR =
PB_Cg2lrem( AiR, AinbR, AnbR, AcurrocR, AsrcR,
615 ABnprocsR );
616 AnpR =
PB_Cnumroc( K, 0, Ainb1R, AnbR, AcurrocR, ArocR,
617 ABnprocsR );
618
619 BcurrocR = ( BisR ? -1 :
MModAdd( BrocR, p, ABnprocsR ) );
620 BkkR =
PB_Cg2lrem( BiR, BinbR, BnbR, BcurrocR, BsrcR,
621 ABnprocsR );
622 BnpR =
PB_Cnumroc( K, 0, Binb1R, BnbR, BcurrocR, BrocR,
623 ABnprocsR );
624
625 PB_CVMinit( &VM, 0, BnpR, AnpR, Binb1R, Ainb1R, BnbR, AnbR,
626 p, q, maxp, maxq, lcmb );
628 }
629
630
631
632
633 if( Wkbb == 0 ) { ABrocs = ( npq < kbb ? npq : kbb ); }
634 else { ABrocs = kbb - Wkbb; ABrocs =
MIN( ABrocs, npq ); }
635
636
637
639
640 if( notran )
641 {
642
643
644
645
646 if( ( Afr = ( ncpq < ABrocs ) ) != 0 )
647 {
648
649
650
651
652 Abufld =
MAX( 1, AnpD );
653 if( AisR || ( ABmyprocR == AcurrocR ) )
654 {
657 ABrocs, AnpD, one,
Mptr( A, AiiD, AkkR, Ald,
658 size ), Ald, zero, Abuf, Abufld );
659 }
660 }
661 else
662 {
663
664
665
666 Abufld = Ald;
667 if( AisR || ( ABmyprocR == AcurrocR ) )
668 Abuf =
Mptr( A, AiiD, AkkR + Aoff, Ald, size );
669 }
670 PB_Cdescset( DBUFA, N, ABrocs, Ainb1D, ABrocs, AnbD, ABrocs,
671 ArocD, AcurrocR, ctxt, Abufld );
672
673
674
675 PB_CInV2(
TYPE,
NOCONJG,
COLUMN, N, N, Cd0, ABrocs, Abuf, 0, 0,
676 DBUFA,
COLUMN, WAC, Wkbb, WACd0 );
677 if( Afr & ( AisR || ( ABmyprocR == AcurrocR ) ) )
678 if( Abuf ) free( Abuf );
679
680
681
682
683
684 if( ( Bfr = ( nrpq < ABrocs ) ) != 0 )
685 {
686
687
688
689
690 Bbufld =
MAX( 1, BnpD );
691 if( BisR || ( ABmyprocR == BcurrocR ) )
692 {
695 ABrocs, BnpD, one,
Mptr( B, BiiD, BkkR, Bld,
696 size ), Bld, zero, Bbuf, Bbufld );
697 }
698 }
699 else
700 {
701
702
703
704 Bbufld = Bld;
705 if( BisR || ( ABmyprocR == BcurrocR ) )
706 Bbuf =
Mptr( B, BiiD, BkkR + Boff, Bld, size );
707 }
708 PB_Cdescset( DBUFB, N, ABrocs, Binb1D, ABrocs, BnbD, ABrocs,
709 BrocD, BcurrocR, ctxt, Bbufld );
710
711
712
713 PB_CInV2(
TYPE,
NOCONJG,
COLUMN, N, N, Cd0, ABrocs, Bbuf, 0, 0,
714 DBUFB,
COLUMN, WBC, Wkbb, WBCd0 );
715 if( Bfr & ( BisR || ( ABmyprocR == BcurrocR ) ) )
716 if( Bbuf ) free( Bbuf );
717 }
718 else
719 {
720
721
722
723
724 if( ( Afr = ( ncpq < ABrocs ) ) != 0 )
725 {
726
727
728
729
730 Abufld = ABrocs;
731 if( AisR || ( ABmyprocR == AcurrocR ) )
732 {
735 ABrocs, AnpD, one,
Mptr( A, AkkR, AiiD, Ald,
736 size ), Ald, zero, Abuf, Abufld );
737 }
738 }
739 else
740 {
741
742
743
744 Abufld = Ald;
745 if( AisR || ( ABmyprocR == AcurrocR ) )
746 Abuf =
Mptr( A, AkkR + Aoff, AiiD, Ald, size );
747 }
748 PB_Cdescset( DBUFA, ABrocs, N, ABrocs, Ainb1D, ABrocs, AnbD,
749 AcurrocR, ArocD, ctxt, Abufld );
750
751
752
753 PB_CInV2(
TYPE,
NOCONJG,
ROW, N, N, Cd0, ABrocs, Abuf, 0, 0,
754 DBUFA,
ROW, WAR, Wkbb, WARd0 );
755 if( Afr & ( AisR || ( ABmyprocR == AcurrocR ) ) )
756 if( Abuf ) free( Abuf );
757
758
759
760
761 if( ( Bfr = ( nrpq < ABrocs ) ) != 0 )
762 {
763
764
765
766
767 Bbufld = ABrocs;
768 if( BisR || ( ABmyprocR == BcurrocR ) )
769 {
772 ABrocs, BnpD, one,
Mptr( B, BkkR, BiiD, Bld,
773 size ), Bld, zero, Bbuf, Bbufld );
774 }
775 }
776 else
777 {
778
779
780
781 Bbufld = Bld;
782 if( BisR || ( ABmyprocR == BcurrocR ) )
783 Bbuf =
Mptr( B, BkkR + Boff, BiiD, Bld, size );
784 }
785 PB_Cdescset( DBUFB, ABrocs, N, ABrocs, Binb1D, ABrocs, BnbD,
786 BcurrocR, BrocD, ctxt, Bbufld );
787
788
789
790 PB_CInV2(
TYPE,
NOCONJG,
ROW, N, N, Cd0, ABrocs, Bbuf, 0, 0,
791 DBUFB,
ROW, WBR, Wkbb, WBRd0 );
792 if( Bfr & ( BisR || ( ABmyprocR == BcurrocR ) ) )
793 if( Bbuf ) free( Bbuf );
794 }
795
796
797
799
800
801
802
803
804 npq -= ABrocs;
805 Wkbb += ABrocs;
806 }
807
808 if( notran )
809 {
810
811
812
813 PB_CInV2(
TYPE, CONJUG,
ROW, N, N, Cd0, kbb, WAC, 0, 0, WACd0,
815
816
817
818 PB_CInV2(
TYPE, CONJUG,
ROW, N, N, Cd0, kbb, WBC, 0, 0, WBCd0,
820 }
821 else
822 {
823
824
825
826 PB_CInV2(
TYPE, CONJUG,
COLUMN, N, N, Cd0, kbb, WAR, 0, 0, WARd0,
827 ROW, WAC, 0, WACd0 );
828
829
830
831 PB_CInV2(
TYPE, CONJUG,
COLUMN, N, N, Cd0, kbb, WBR, 0, 0, WBRd0,
832 ROW, WBC, 0, WBCd0 );
833 }
834
835
836
837 if( ( Cmp > 0 ) && ( Cnq > 0 ) )
838 {
839 WACld = WACd0[
LLD_]; WBCld = WBCd0[
LLD_];
840 WARld = WARd0[
LLD_]; WBRld = WBRd0[
LLD_];
841
842 if( upper )
843 {
844 for( l = 0; l < N; l += Clcmb )
845 {
846 lb = N - l; lb =
MIN( lb, Clcmb );
847 Clp =
PB_Cnumroc( l, 0, Cimb1, Cmb, myrow, Crow, nprow );
848 Clq =
PB_Cnumroc( l, 0, Cinb1, Cnb, mycol, Ccol, npcol );
849 Cnq0 =
PB_Cnumroc( lb, l, Cinb1, Cnb, mycol, Ccol, npcol );
850 if( Clp > 0 && Cnq0 > 0 )
851 {
853 &kbb, ALPHA, WAC, &WACld,
Mptr( WBR, 0, Clq, WBRld,
854 size ), &WBRld, one,
Mptr( Cptr, 0, Clq, Cld, size ),
855 &Cld );
857 &kbb, talpha, WBC, &WBCld,
Mptr( WAR, 0, Clq, WARld,
858 size ), &WARld, one,
Mptr( Cptr, 0, Clq, Cld, size ),
859 &Cld );
860 }
862 size ), WACld,
Mptr( WAR, 0, Clq, WARld, size ),
863 WARld,
Mptr( WBC, Clp, 0, WBCld, size ), WBCld,
864 Mptr( WBR, 0, Clq, WBRld, size ), WBRld, Cptr, l, l,
865 Cd0, tzsyr2k );
866 }
867 }
868 else
869 {
870 for( l = 0; l < N; l += Clcmb )
871 {
872 lb = N - l; ltmp = l + ( lb =
MIN( lb, Clcmb ) );
873 Clp =
PB_Cnumroc( l, 0, Cimb1, Cmb, myrow, Crow, nprow );
874 Clq =
PB_Cnumroc( l, 0, Cinb1, Cnb, mycol, Ccol, npcol );
875
877 size ), WACld,
Mptr( WAR, 0, Clq, WARld, size ),
878 WARld,
Mptr( WBC, Clp, 0, WBCld, size ), WBCld,
879 Mptr( WBR, 0, Clq, WBRld, size ), WBRld, Cptr, l, l,
880 Cd0, tzsyr2k );
881 Clp =
PB_Cnumroc( ltmp, 0, Cimb1, Cmb, myrow, Crow, nprow );
882 Cmp0 = Cmp - Clp;
883 Cnq0 =
PB_Cnumroc( lb, l, Cinb1, Cnb, mycol, Ccol, npcol );
884 if( Cmp0 > 0 && Cnq0 > 0 )
885 {
887 &kbb, ALPHA,
Mptr( WAC, Clp, 0, WACld, size ), &WACld,
888 Mptr( WBR, 0, Clq, WBRld, size ), &WBRld, one,
889 Mptr( Cptr, Clp, Clq, Cld, size ), &Cld );
891 &kbb, talpha,
Mptr( WBC, Clp, 0, WBCld, size ), &WBCld,
892 Mptr( WAR, 0, Clq, WARld, size ), &WARld, one,
893 Mptr( Cptr, Clp, Clq, Cld, size ), &Cld );
894 }
895 }
896 }
897 }
898
899 Wkbb = 0;
900 }
901
902 if( WACfr ) free( WAC );
903 if( WARfr ) free( WAR );
904 if( WBCfr ) free( WBC );
905 if( WBRfr ) free( WBR );
906
907 if( conjg && ( Cmp > 0 ) && ( Cnq > 0 ) ) free( talpha );
908
909
910
911}