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