00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015
00016
00017
00018 static complex c_b1 = {1.f,0.f};
00019 static integer c__1 = 1;
00020
00021 int clasyf_(char *uplo, integer *n, integer *nb, integer *kb,
00022 complex *a, integer *lda, integer *ipiv, complex *w, integer *ldw,
00023 integer *info)
00024 {
00025
00026 integer a_dim1, a_offset, w_dim1, w_offset, i__1, i__2, i__3, i__4, i__5;
00027 real r__1, r__2, r__3, r__4;
00028 complex q__1, q__2, q__3;
00029
00030
00031 double sqrt(doublereal), r_imag(complex *);
00032 void c_div(complex *, complex *, complex *);
00033
00034
00035 integer j, k;
00036 complex t, r1, d11, d21, d22;
00037 integer jb, jj, kk, jp, kp, kw, kkw, imax, jmax;
00038 real alpha;
00039 extern int cscal_(integer *, complex *, complex *,
00040 integer *), cgemm_(char *, char *, integer *, integer *, integer *
00041 , complex *, complex *, integer *, complex *, integer *, complex *
00042 , complex *, integer *);
00043 extern logical lsame_(char *, char *);
00044 extern int cgemv_(char *, integer *, integer *, complex *
00045 , complex *, integer *, complex *, integer *, complex *, complex *
00046 , integer *), ccopy_(integer *, complex *, integer *,
00047 complex *, integer *), cswap_(integer *, complex *, integer *,
00048 complex *, integer *);
00049 integer kstep;
00050 real absakk;
00051 extern integer icamax_(integer *, complex *, integer *);
00052 real colmax, rowmax;
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 a_dim1 = *lda;
00163 a_offset = 1 + a_dim1;
00164 a -= a_offset;
00165 --ipiv;
00166 w_dim1 = *ldw;
00167 w_offset = 1 + w_dim1;
00168 w -= w_offset;
00169
00170
00171 *info = 0;
00172
00173
00174
00175 alpha = (sqrt(17.f) + 1.f) / 8.f;
00176
00177 if (lsame_(uplo, "U")) {
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187 k = *n;
00188 L10:
00189 kw = *nb + k - *n;
00190
00191
00192
00193 if (k <= *n - *nb + 1 && *nb < *n || k < 1) {
00194 goto L30;
00195 }
00196
00197
00198
00199 ccopy_(&k, &a[k * a_dim1 + 1], &c__1, &w[kw * w_dim1 + 1], &c__1);
00200 if (k < *n) {
00201 i__1 = *n - k;
00202 q__1.r = -1.f, q__1.i = -0.f;
00203 cgemv_("No transpose", &k, &i__1, &q__1, &a[(k + 1) * a_dim1 + 1],
00204 lda, &w[k + (kw + 1) * w_dim1], ldw, &c_b1, &w[kw *
00205 w_dim1 + 1], &c__1);
00206 }
00207
00208 kstep = 1;
00209
00210
00211
00212
00213 i__1 = k + kw * w_dim1;
00214 absakk = (r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[k + kw *
00215 w_dim1]), dabs(r__2));
00216
00217
00218
00219
00220 if (k > 1) {
00221 i__1 = k - 1;
00222 imax = icamax_(&i__1, &w[kw * w_dim1 + 1], &c__1);
00223 i__1 = imax + kw * w_dim1;
00224 colmax = (r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[imax
00225 + kw * w_dim1]), dabs(r__2));
00226 } else {
00227 colmax = 0.f;
00228 }
00229
00230 if (dmax(absakk,colmax) == 0.f) {
00231
00232
00233
00234 if (*info == 0) {
00235 *info = k;
00236 }
00237 kp = k;
00238 } else {
00239 if (absakk >= alpha * colmax) {
00240
00241
00242
00243 kp = k;
00244 } else {
00245
00246
00247
00248 ccopy_(&imax, &a[imax * a_dim1 + 1], &c__1, &w[(kw - 1) *
00249 w_dim1 + 1], &c__1);
00250 i__1 = k - imax;
00251 ccopy_(&i__1, &a[imax + (imax + 1) * a_dim1], lda, &w[imax +
00252 1 + (kw - 1) * w_dim1], &c__1);
00253 if (k < *n) {
00254 i__1 = *n - k;
00255 q__1.r = -1.f, q__1.i = -0.f;
00256 cgemv_("No transpose", &k, &i__1, &q__1, &a[(k + 1) *
00257 a_dim1 + 1], lda, &w[imax + (kw + 1) * w_dim1],
00258 ldw, &c_b1, &w[(kw - 1) * w_dim1 + 1], &c__1);
00259 }
00260
00261
00262
00263
00264 i__1 = k - imax;
00265 jmax = imax + icamax_(&i__1, &w[imax + 1 + (kw - 1) * w_dim1],
00266 &c__1);
00267 i__1 = jmax + (kw - 1) * w_dim1;
00268 rowmax = (r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[
00269 jmax + (kw - 1) * w_dim1]), dabs(r__2));
00270 if (imax > 1) {
00271 i__1 = imax - 1;
00272 jmax = icamax_(&i__1, &w[(kw - 1) * w_dim1 + 1], &c__1);
00273
00274 i__1 = jmax + (kw - 1) * w_dim1;
00275 r__3 = rowmax, r__4 = (r__1 = w[i__1].r, dabs(r__1)) + (
00276 r__2 = r_imag(&w[jmax + (kw - 1) * w_dim1]), dabs(
00277 r__2));
00278 rowmax = dmax(r__3,r__4);
00279 }
00280
00281 if (absakk >= alpha * colmax * (colmax / rowmax)) {
00282
00283
00284
00285 kp = k;
00286 } else {
00287 i__1 = imax + (kw - 1) * w_dim1;
00288 if ((r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[
00289 imax + (kw - 1) * w_dim1]), dabs(r__2)) >= alpha *
00290 rowmax) {
00291
00292
00293
00294
00295 kp = imax;
00296
00297
00298
00299 ccopy_(&k, &w[(kw - 1) * w_dim1 + 1], &c__1, &w[kw *
00300 w_dim1 + 1], &c__1);
00301 } else {
00302
00303
00304
00305
00306 kp = imax;
00307 kstep = 2;
00308 }
00309 }
00310 }
00311
00312 kk = k - kstep + 1;
00313 kkw = *nb + kk - *n;
00314
00315
00316
00317 if (kp != kk) {
00318
00319
00320
00321 i__1 = kp + k * a_dim1;
00322 i__2 = kk + k * a_dim1;
00323 a[i__1].r = a[i__2].r, a[i__1].i = a[i__2].i;
00324 i__1 = k - 1 - kp;
00325 ccopy_(&i__1, &a[kp + 1 + kk * a_dim1], &c__1, &a[kp + (kp +
00326 1) * a_dim1], lda);
00327 ccopy_(&kp, &a[kk * a_dim1 + 1], &c__1, &a[kp * a_dim1 + 1], &
00328 c__1);
00329
00330
00331
00332 i__1 = *n - kk + 1;
00333 cswap_(&i__1, &a[kk + kk * a_dim1], lda, &a[kp + kk * a_dim1],
00334 lda);
00335 i__1 = *n - kk + 1;
00336 cswap_(&i__1, &w[kk + kkw * w_dim1], ldw, &w[kp + kkw *
00337 w_dim1], ldw);
00338 }
00339
00340 if (kstep == 1) {
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350 ccopy_(&k, &w[kw * w_dim1 + 1], &c__1, &a[k * a_dim1 + 1], &
00351 c__1);
00352 c_div(&q__1, &c_b1, &a[k + k * a_dim1]);
00353 r1.r = q__1.r, r1.i = q__1.i;
00354 i__1 = k - 1;
00355 cscal_(&i__1, &r1, &a[k * a_dim1 + 1], &c__1);
00356 } else {
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366 if (k > 2) {
00367
00368
00369
00370 i__1 = k - 1 + kw * w_dim1;
00371 d21.r = w[i__1].r, d21.i = w[i__1].i;
00372 c_div(&q__1, &w[k + kw * w_dim1], &d21);
00373 d11.r = q__1.r, d11.i = q__1.i;
00374 c_div(&q__1, &w[k - 1 + (kw - 1) * w_dim1], &d21);
00375 d22.r = q__1.r, d22.i = q__1.i;
00376 q__3.r = d11.r * d22.r - d11.i * d22.i, q__3.i = d11.r *
00377 d22.i + d11.i * d22.r;
00378 q__2.r = q__3.r - 1.f, q__2.i = q__3.i - 0.f;
00379 c_div(&q__1, &c_b1, &q__2);
00380 t.r = q__1.r, t.i = q__1.i;
00381 c_div(&q__1, &t, &d21);
00382 d21.r = q__1.r, d21.i = q__1.i;
00383 i__1 = k - 2;
00384 for (j = 1; j <= i__1; ++j) {
00385 i__2 = j + (k - 1) * a_dim1;
00386 i__3 = j + (kw - 1) * w_dim1;
00387 q__3.r = d11.r * w[i__3].r - d11.i * w[i__3].i,
00388 q__3.i = d11.r * w[i__3].i + d11.i * w[i__3]
00389 .r;
00390 i__4 = j + kw * w_dim1;
00391 q__2.r = q__3.r - w[i__4].r, q__2.i = q__3.i - w[i__4]
00392 .i;
00393 q__1.r = d21.r * q__2.r - d21.i * q__2.i, q__1.i =
00394 d21.r * q__2.i + d21.i * q__2.r;
00395 a[i__2].r = q__1.r, a[i__2].i = q__1.i;
00396 i__2 = j + k * a_dim1;
00397 i__3 = j + kw * w_dim1;
00398 q__3.r = d22.r * w[i__3].r - d22.i * w[i__3].i,
00399 q__3.i = d22.r * w[i__3].i + d22.i * w[i__3]
00400 .r;
00401 i__4 = j + (kw - 1) * w_dim1;
00402 q__2.r = q__3.r - w[i__4].r, q__2.i = q__3.i - w[i__4]
00403 .i;
00404 q__1.r = d21.r * q__2.r - d21.i * q__2.i, q__1.i =
00405 d21.r * q__2.i + d21.i * q__2.r;
00406 a[i__2].r = q__1.r, a[i__2].i = q__1.i;
00407
00408 }
00409 }
00410
00411
00412
00413 i__1 = k - 1 + (k - 1) * a_dim1;
00414 i__2 = k - 1 + (kw - 1) * w_dim1;
00415 a[i__1].r = w[i__2].r, a[i__1].i = w[i__2].i;
00416 i__1 = k - 1 + k * a_dim1;
00417 i__2 = k - 1 + kw * w_dim1;
00418 a[i__1].r = w[i__2].r, a[i__1].i = w[i__2].i;
00419 i__1 = k + k * a_dim1;
00420 i__2 = k + kw * w_dim1;
00421 a[i__1].r = w[i__2].r, a[i__1].i = w[i__2].i;
00422 }
00423 }
00424
00425
00426
00427 if (kstep == 1) {
00428 ipiv[k] = kp;
00429 } else {
00430 ipiv[k] = -kp;
00431 ipiv[k - 1] = -kp;
00432 }
00433
00434
00435
00436 k -= kstep;
00437 goto L10;
00438
00439 L30:
00440
00441
00442
00443
00444
00445
00446
00447 i__1 = -(*nb);
00448 for (j = (k - 1) / *nb * *nb + 1; i__1 < 0 ? j >= 1 : j <= 1; j +=
00449 i__1) {
00450
00451 i__2 = *nb, i__3 = k - j + 1;
00452 jb = min(i__2,i__3);
00453
00454
00455
00456 i__2 = j + jb - 1;
00457 for (jj = j; jj <= i__2; ++jj) {
00458 i__3 = jj - j + 1;
00459 i__4 = *n - k;
00460 q__1.r = -1.f, q__1.i = -0.f;
00461 cgemv_("No transpose", &i__3, &i__4, &q__1, &a[j + (k + 1) *
00462 a_dim1], lda, &w[jj + (kw + 1) * w_dim1], ldw, &c_b1,
00463 &a[j + jj * a_dim1], &c__1);
00464
00465 }
00466
00467
00468
00469 i__2 = j - 1;
00470 i__3 = *n - k;
00471 q__1.r = -1.f, q__1.i = -0.f;
00472 cgemm_("No transpose", "Transpose", &i__2, &jb, &i__3, &q__1, &a[(
00473 k + 1) * a_dim1 + 1], lda, &w[j + (kw + 1) * w_dim1], ldw,
00474 &c_b1, &a[j * a_dim1 + 1], lda);
00475
00476 }
00477
00478
00479
00480
00481 j = k + 1;
00482 L60:
00483 jj = j;
00484 jp = ipiv[j];
00485 if (jp < 0) {
00486 jp = -jp;
00487 ++j;
00488 }
00489 ++j;
00490 if (jp != jj && j <= *n) {
00491 i__1 = *n - j + 1;
00492 cswap_(&i__1, &a[jp + j * a_dim1], lda, &a[jj + j * a_dim1], lda);
00493 }
00494 if (j <= *n) {
00495 goto L60;
00496 }
00497
00498
00499
00500 *kb = *n - k;
00501
00502 } else {
00503
00504
00505
00506
00507
00508
00509
00510 k = 1;
00511 L70:
00512
00513
00514
00515 if (k >= *nb && *nb < *n || k > *n) {
00516 goto L90;
00517 }
00518
00519
00520
00521 i__1 = *n - k + 1;
00522 ccopy_(&i__1, &a[k + k * a_dim1], &c__1, &w[k + k * w_dim1], &c__1);
00523 i__1 = *n - k + 1;
00524 i__2 = k - 1;
00525 q__1.r = -1.f, q__1.i = -0.f;
00526 cgemv_("No transpose", &i__1, &i__2, &q__1, &a[k + a_dim1], lda, &w[k
00527 + w_dim1], ldw, &c_b1, &w[k + k * w_dim1], &c__1);
00528
00529 kstep = 1;
00530
00531
00532
00533
00534 i__1 = k + k * w_dim1;
00535 absakk = (r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[k + k *
00536 w_dim1]), dabs(r__2));
00537
00538
00539
00540
00541 if (k < *n) {
00542 i__1 = *n - k;
00543 imax = k + icamax_(&i__1, &w[k + 1 + k * w_dim1], &c__1);
00544 i__1 = imax + k * w_dim1;
00545 colmax = (r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[imax
00546 + k * w_dim1]), dabs(r__2));
00547 } else {
00548 colmax = 0.f;
00549 }
00550
00551 if (dmax(absakk,colmax) == 0.f) {
00552
00553
00554
00555 if (*info == 0) {
00556 *info = k;
00557 }
00558 kp = k;
00559 } else {
00560 if (absakk >= alpha * colmax) {
00561
00562
00563
00564 kp = k;
00565 } else {
00566
00567
00568
00569 i__1 = imax - k;
00570 ccopy_(&i__1, &a[imax + k * a_dim1], lda, &w[k + (k + 1) *
00571 w_dim1], &c__1);
00572 i__1 = *n - imax + 1;
00573 ccopy_(&i__1, &a[imax + imax * a_dim1], &c__1, &w[imax + (k +
00574 1) * w_dim1], &c__1);
00575 i__1 = *n - k + 1;
00576 i__2 = k - 1;
00577 q__1.r = -1.f, q__1.i = -0.f;
00578 cgemv_("No transpose", &i__1, &i__2, &q__1, &a[k + a_dim1],
00579 lda, &w[imax + w_dim1], ldw, &c_b1, &w[k + (k + 1) *
00580 w_dim1], &c__1);
00581
00582
00583
00584
00585 i__1 = imax - k;
00586 jmax = k - 1 + icamax_(&i__1, &w[k + (k + 1) * w_dim1], &c__1)
00587 ;
00588 i__1 = jmax + (k + 1) * w_dim1;
00589 rowmax = (r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[
00590 jmax + (k + 1) * w_dim1]), dabs(r__2));
00591 if (imax < *n) {
00592 i__1 = *n - imax;
00593 jmax = imax + icamax_(&i__1, &w[imax + 1 + (k + 1) *
00594 w_dim1], &c__1);
00595
00596 i__1 = jmax + (k + 1) * w_dim1;
00597 r__3 = rowmax, r__4 = (r__1 = w[i__1].r, dabs(r__1)) + (
00598 r__2 = r_imag(&w[jmax + (k + 1) * w_dim1]), dabs(
00599 r__2));
00600 rowmax = dmax(r__3,r__4);
00601 }
00602
00603 if (absakk >= alpha * colmax * (colmax / rowmax)) {
00604
00605
00606
00607 kp = k;
00608 } else {
00609 i__1 = imax + (k + 1) * w_dim1;
00610 if ((r__1 = w[i__1].r, dabs(r__1)) + (r__2 = r_imag(&w[
00611 imax + (k + 1) * w_dim1]), dabs(r__2)) >= alpha *
00612 rowmax) {
00613
00614
00615
00616
00617 kp = imax;
00618
00619
00620
00621 i__1 = *n - k + 1;
00622 ccopy_(&i__1, &w[k + (k + 1) * w_dim1], &c__1, &w[k +
00623 k * w_dim1], &c__1);
00624 } else {
00625
00626
00627
00628
00629 kp = imax;
00630 kstep = 2;
00631 }
00632 }
00633 }
00634
00635 kk = k + kstep - 1;
00636
00637
00638
00639 if (kp != kk) {
00640
00641
00642
00643 i__1 = kp + k * a_dim1;
00644 i__2 = kk + k * a_dim1;
00645 a[i__1].r = a[i__2].r, a[i__1].i = a[i__2].i;
00646 i__1 = kp - k - 1;
00647 ccopy_(&i__1, &a[k + 1 + kk * a_dim1], &c__1, &a[kp + (k + 1)
00648 * a_dim1], lda);
00649 i__1 = *n - kp + 1;
00650 ccopy_(&i__1, &a[kp + kk * a_dim1], &c__1, &a[kp + kp *
00651 a_dim1], &c__1);
00652
00653
00654
00655 cswap_(&kk, &a[kk + a_dim1], lda, &a[kp + a_dim1], lda);
00656 cswap_(&kk, &w[kk + w_dim1], ldw, &w[kp + w_dim1], ldw);
00657 }
00658
00659 if (kstep == 1) {
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669 i__1 = *n - k + 1;
00670 ccopy_(&i__1, &w[k + k * w_dim1], &c__1, &a[k + k * a_dim1], &
00671 c__1);
00672 if (k < *n) {
00673 c_div(&q__1, &c_b1, &a[k + k * a_dim1]);
00674 r1.r = q__1.r, r1.i = q__1.i;
00675 i__1 = *n - k;
00676 cscal_(&i__1, &r1, &a[k + 1 + k * a_dim1], &c__1);
00677 }
00678 } else {
00679
00680
00681
00682
00683
00684
00685
00686
00687 if (k < *n - 1) {
00688
00689
00690
00691 i__1 = k + 1 + k * w_dim1;
00692 d21.r = w[i__1].r, d21.i = w[i__1].i;
00693 c_div(&q__1, &w[k + 1 + (k + 1) * w_dim1], &d21);
00694 d11.r = q__1.r, d11.i = q__1.i;
00695 c_div(&q__1, &w[k + k * w_dim1], &d21);
00696 d22.r = q__1.r, d22.i = q__1.i;
00697 q__3.r = d11.r * d22.r - d11.i * d22.i, q__3.i = d11.r *
00698 d22.i + d11.i * d22.r;
00699 q__2.r = q__3.r - 1.f, q__2.i = q__3.i - 0.f;
00700 c_div(&q__1, &c_b1, &q__2);
00701 t.r = q__1.r, t.i = q__1.i;
00702 c_div(&q__1, &t, &d21);
00703 d21.r = q__1.r, d21.i = q__1.i;
00704 i__1 = *n;
00705 for (j = k + 2; j <= i__1; ++j) {
00706 i__2 = j + k * a_dim1;
00707 i__3 = j + k * w_dim1;
00708 q__3.r = d11.r * w[i__3].r - d11.i * w[i__3].i,
00709 q__3.i = d11.r * w[i__3].i + d11.i * w[i__3]
00710 .r;
00711 i__4 = j + (k + 1) * w_dim1;
00712 q__2.r = q__3.r - w[i__4].r, q__2.i = q__3.i - w[i__4]
00713 .i;
00714 q__1.r = d21.r * q__2.r - d21.i * q__2.i, q__1.i =
00715 d21.r * q__2.i + d21.i * q__2.r;
00716 a[i__2].r = q__1.r, a[i__2].i = q__1.i;
00717 i__2 = j + (k + 1) * a_dim1;
00718 i__3 = j + (k + 1) * w_dim1;
00719 q__3.r = d22.r * w[i__3].r - d22.i * w[i__3].i,
00720 q__3.i = d22.r * w[i__3].i + d22.i * w[i__3]
00721 .r;
00722 i__4 = j + k * w_dim1;
00723 q__2.r = q__3.r - w[i__4].r, q__2.i = q__3.i - w[i__4]
00724 .i;
00725 q__1.r = d21.r * q__2.r - d21.i * q__2.i, q__1.i =
00726 d21.r * q__2.i + d21.i * q__2.r;
00727 a[i__2].r = q__1.r, a[i__2].i = q__1.i;
00728
00729 }
00730 }
00731
00732
00733
00734 i__1 = k + k * a_dim1;
00735 i__2 = k + k * w_dim1;
00736 a[i__1].r = w[i__2].r, a[i__1].i = w[i__2].i;
00737 i__1 = k + 1 + k * a_dim1;
00738 i__2 = k + 1 + k * w_dim1;
00739 a[i__1].r = w[i__2].r, a[i__1].i = w[i__2].i;
00740 i__1 = k + 1 + (k + 1) * a_dim1;
00741 i__2 = k + 1 + (k + 1) * w_dim1;
00742 a[i__1].r = w[i__2].r, a[i__1].i = w[i__2].i;
00743 }
00744 }
00745
00746
00747
00748 if (kstep == 1) {
00749 ipiv[k] = kp;
00750 } else {
00751 ipiv[k] = -kp;
00752 ipiv[k + 1] = -kp;
00753 }
00754
00755
00756
00757 k += kstep;
00758 goto L70;
00759
00760 L90:
00761
00762
00763
00764
00765
00766
00767
00768 i__1 = *n;
00769 i__2 = *nb;
00770 for (j = k; i__2 < 0 ? j >= i__1 : j <= i__1; j += i__2) {
00771
00772 i__3 = *nb, i__4 = *n - j + 1;
00773 jb = min(i__3,i__4);
00774
00775
00776
00777 i__3 = j + jb - 1;
00778 for (jj = j; jj <= i__3; ++jj) {
00779 i__4 = j + jb - jj;
00780 i__5 = k - 1;
00781 q__1.r = -1.f, q__1.i = -0.f;
00782 cgemv_("No transpose", &i__4, &i__5, &q__1, &a[jj + a_dim1],
00783 lda, &w[jj + w_dim1], ldw, &c_b1, &a[jj + jj * a_dim1]
00784 , &c__1);
00785
00786 }
00787
00788
00789
00790 if (j + jb <= *n) {
00791 i__3 = *n - j - jb + 1;
00792 i__4 = k - 1;
00793 q__1.r = -1.f, q__1.i = -0.f;
00794 cgemm_("No transpose", "Transpose", &i__3, &jb, &i__4, &q__1,
00795 &a[j + jb + a_dim1], lda, &w[j + w_dim1], ldw, &c_b1,
00796 &a[j + jb + j * a_dim1], lda);
00797 }
00798
00799 }
00800
00801
00802
00803
00804 j = k - 1;
00805 L120:
00806 jj = j;
00807 jp = ipiv[j];
00808 if (jp < 0) {
00809 jp = -jp;
00810 --j;
00811 }
00812 --j;
00813 if (jp != jj && j >= 1) {
00814 cswap_(&j, &a[jp + a_dim1], lda, &a[jj + a_dim1], lda);
00815 }
00816 if (j >= 1) {
00817 goto L120;
00818 }
00819
00820
00821
00822 *kb = k - 1;
00823
00824 }
00825 return 0;
00826
00827
00828
00829 }