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 doublecomplex c_b1 = {0.,0.};
00019 static integer c__1 = 1;
00020 static integer c__0 = 0;
00021 static doublereal c_b10 = 1.;
00022 static doublereal c_b35 = 0.;
00023
00024 int zlalsd_(char *uplo, integer *smlsiz, integer *n, integer
00025 *nrhs, doublereal *d__, doublereal *e, doublecomplex *b, integer *ldb,
00026 doublereal *rcond, integer *rank, doublecomplex *work, doublereal *
00027 rwork, integer *iwork, integer *info)
00028 {
00029
00030 integer b_dim1, b_offset, i__1, i__2, i__3, i__4, i__5, i__6;
00031 doublereal d__1;
00032 doublecomplex z__1;
00033
00034
00035 double d_imag(doublecomplex *), log(doublereal), d_sign(doublereal *,
00036 doublereal *);
00037
00038
00039 integer c__, i__, j, k;
00040 doublereal r__;
00041 integer s, u, z__;
00042 doublereal cs;
00043 integer bx;
00044 doublereal sn;
00045 integer st, vt, nm1, st1;
00046 doublereal eps;
00047 integer iwk;
00048 doublereal tol;
00049 integer difl, difr;
00050 doublereal rcnd;
00051 integer jcol, irwb, perm, nsub, nlvl, sqre, bxst, jrow, irwu, jimag;
00052 extern int dgemm_(char *, char *, integer *, integer *,
00053 integer *, doublereal *, doublereal *, integer *, doublereal *,
00054 integer *, doublereal *, doublereal *, integer *);
00055 integer jreal, irwib, poles, sizei, irwrb, nsize;
00056 extern int zdrot_(integer *, doublecomplex *, integer *,
00057 doublecomplex *, integer *, doublereal *, doublereal *), zcopy_(
00058 integer *, doublecomplex *, integer *, doublecomplex *, integer *)
00059 ;
00060 integer irwvt, icmpq1, icmpq2;
00061 extern doublereal dlamch_(char *);
00062 extern int dlasda_(integer *, integer *, integer *,
00063 integer *, doublereal *, doublereal *, doublereal *, integer *,
00064 doublereal *, integer *, doublereal *, doublereal *, doublereal *,
00065 doublereal *, integer *, integer *, integer *, integer *,
00066 doublereal *, doublereal *, doublereal *, doublereal *, integer *,
00067 integer *), dlascl_(char *, integer *, integer *, doublereal *,
00068 doublereal *, integer *, integer *, doublereal *, integer *,
00069 integer *);
00070 extern integer idamax_(integer *, doublereal *, integer *);
00071 extern int dlasdq_(char *, integer *, integer *, integer
00072 *, integer *, integer *, doublereal *, doublereal *, doublereal *,
00073 integer *, doublereal *, integer *, doublereal *, integer *,
00074 doublereal *, integer *), dlaset_(char *, integer *,
00075 integer *, doublereal *, doublereal *, doublereal *, integer *), dlartg_(doublereal *, doublereal *, doublereal *,
00076 doublereal *, doublereal *), xerbla_(char *, integer *);
00077 integer givcol;
00078 extern doublereal dlanst_(char *, integer *, doublereal *, doublereal *);
00079 extern int zlalsa_(integer *, integer *, integer *,
00080 integer *, doublecomplex *, integer *, doublecomplex *, integer *,
00081 doublereal *, integer *, doublereal *, integer *, doublereal *,
00082 doublereal *, doublereal *, doublereal *, integer *, integer *,
00083 integer *, integer *, doublereal *, doublereal *, doublereal *,
00084 doublereal *, integer *, integer *), zlascl_(char *, integer *,
00085 integer *, doublereal *, doublereal *, integer *, integer *,
00086 doublecomplex *, integer *, integer *), dlasrt_(char *,
00087 integer *, doublereal *, integer *), zlacpy_(char *,
00088 integer *, integer *, doublecomplex *, integer *, doublecomplex *,
00089 integer *), zlaset_(char *, integer *, integer *,
00090 doublecomplex *, doublecomplex *, doublecomplex *, integer *);
00091 doublereal orgnrm;
00092 integer givnum, givptr, nrwork, irwwrk, smlszp;
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
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215 --d__;
00216 --e;
00217 b_dim1 = *ldb;
00218 b_offset = 1 + b_dim1;
00219 b -= b_offset;
00220 --work;
00221 --rwork;
00222 --iwork;
00223
00224
00225 *info = 0;
00226
00227 if (*n < 0) {
00228 *info = -3;
00229 } else if (*nrhs < 1) {
00230 *info = -4;
00231 } else if (*ldb < 1 || *ldb < *n) {
00232 *info = -8;
00233 }
00234 if (*info != 0) {
00235 i__1 = -(*info);
00236 xerbla_("ZLALSD", &i__1);
00237 return 0;
00238 }
00239
00240 eps = dlamch_("Epsilon");
00241
00242
00243
00244 if (*rcond <= 0. || *rcond >= 1.) {
00245 rcnd = eps;
00246 } else {
00247 rcnd = *rcond;
00248 }
00249
00250 *rank = 0;
00251
00252
00253
00254 if (*n == 0) {
00255 return 0;
00256 } else if (*n == 1) {
00257 if (d__[1] == 0.) {
00258 zlaset_("A", &c__1, nrhs, &c_b1, &c_b1, &b[b_offset], ldb);
00259 } else {
00260 *rank = 1;
00261 zlascl_("G", &c__0, &c__0, &d__[1], &c_b10, &c__1, nrhs, &b[
00262 b_offset], ldb, info);
00263 d__[1] = abs(d__[1]);
00264 }
00265 return 0;
00266 }
00267
00268
00269
00270 if (*(unsigned char *)uplo == 'L') {
00271 i__1 = *n - 1;
00272 for (i__ = 1; i__ <= i__1; ++i__) {
00273 dlartg_(&d__[i__], &e[i__], &cs, &sn, &r__);
00274 d__[i__] = r__;
00275 e[i__] = sn * d__[i__ + 1];
00276 d__[i__ + 1] = cs * d__[i__ + 1];
00277 if (*nrhs == 1) {
00278 zdrot_(&c__1, &b[i__ + b_dim1], &c__1, &b[i__ + 1 + b_dim1], &
00279 c__1, &cs, &sn);
00280 } else {
00281 rwork[(i__ << 1) - 1] = cs;
00282 rwork[i__ * 2] = sn;
00283 }
00284
00285 }
00286 if (*nrhs > 1) {
00287 i__1 = *nrhs;
00288 for (i__ = 1; i__ <= i__1; ++i__) {
00289 i__2 = *n - 1;
00290 for (j = 1; j <= i__2; ++j) {
00291 cs = rwork[(j << 1) - 1];
00292 sn = rwork[j * 2];
00293 zdrot_(&c__1, &b[j + i__ * b_dim1], &c__1, &b[j + 1 + i__
00294 * b_dim1], &c__1, &cs, &sn);
00295
00296 }
00297
00298 }
00299 }
00300 }
00301
00302
00303
00304 nm1 = *n - 1;
00305 orgnrm = dlanst_("M", n, &d__[1], &e[1]);
00306 if (orgnrm == 0.) {
00307 zlaset_("A", n, nrhs, &c_b1, &c_b1, &b[b_offset], ldb);
00308 return 0;
00309 }
00310
00311 dlascl_("G", &c__0, &c__0, &orgnrm, &c_b10, n, &c__1, &d__[1], n, info);
00312 dlascl_("G", &c__0, &c__0, &orgnrm, &c_b10, &nm1, &c__1, &e[1], &nm1,
00313 info);
00314
00315
00316
00317
00318 if (*n <= *smlsiz) {
00319 irwu = 1;
00320 irwvt = irwu + *n * *n;
00321 irwwrk = irwvt + *n * *n;
00322 irwrb = irwwrk;
00323 irwib = irwrb + *n * *nrhs;
00324 irwb = irwib + *n * *nrhs;
00325 dlaset_("A", n, n, &c_b35, &c_b10, &rwork[irwu], n);
00326 dlaset_("A", n, n, &c_b35, &c_b10, &rwork[irwvt], n);
00327 dlasdq_("U", &c__0, n, n, n, &c__0, &d__[1], &e[1], &rwork[irwvt], n,
00328 &rwork[irwu], n, &rwork[irwwrk], &c__1, &rwork[irwwrk], info);
00329 if (*info != 0) {
00330 return 0;
00331 }
00332
00333
00334
00335
00336
00337 j = irwb - 1;
00338 i__1 = *nrhs;
00339 for (jcol = 1; jcol <= i__1; ++jcol) {
00340 i__2 = *n;
00341 for (jrow = 1; jrow <= i__2; ++jrow) {
00342 ++j;
00343 i__3 = jrow + jcol * b_dim1;
00344 rwork[j] = b[i__3].r;
00345
00346 }
00347
00348 }
00349 dgemm_("T", "N", n, nrhs, n, &c_b10, &rwork[irwu], n, &rwork[irwb], n,
00350 &c_b35, &rwork[irwrb], n);
00351 j = irwb - 1;
00352 i__1 = *nrhs;
00353 for (jcol = 1; jcol <= i__1; ++jcol) {
00354 i__2 = *n;
00355 for (jrow = 1; jrow <= i__2; ++jrow) {
00356 ++j;
00357 rwork[j] = d_imag(&b[jrow + jcol * b_dim1]);
00358
00359 }
00360
00361 }
00362 dgemm_("T", "N", n, nrhs, n, &c_b10, &rwork[irwu], n, &rwork[irwb], n,
00363 &c_b35, &rwork[irwib], n);
00364 jreal = irwrb - 1;
00365 jimag = irwib - 1;
00366 i__1 = *nrhs;
00367 for (jcol = 1; jcol <= i__1; ++jcol) {
00368 i__2 = *n;
00369 for (jrow = 1; jrow <= i__2; ++jrow) {
00370 ++jreal;
00371 ++jimag;
00372 i__3 = jrow + jcol * b_dim1;
00373 i__4 = jreal;
00374 i__5 = jimag;
00375 z__1.r = rwork[i__4], z__1.i = rwork[i__5];
00376 b[i__3].r = z__1.r, b[i__3].i = z__1.i;
00377
00378 }
00379
00380 }
00381
00382 tol = rcnd * (d__1 = d__[idamax_(n, &d__[1], &c__1)], abs(d__1));
00383 i__1 = *n;
00384 for (i__ = 1; i__ <= i__1; ++i__) {
00385 if (d__[i__] <= tol) {
00386 zlaset_("A", &c__1, nrhs, &c_b1, &c_b1, &b[i__ + b_dim1], ldb);
00387 } else {
00388 zlascl_("G", &c__0, &c__0, &d__[i__], &c_b10, &c__1, nrhs, &b[
00389 i__ + b_dim1], ldb, info);
00390 ++(*rank);
00391 }
00392
00393 }
00394
00395
00396
00397
00398
00399
00400
00401
00402 j = irwb - 1;
00403 i__1 = *nrhs;
00404 for (jcol = 1; jcol <= i__1; ++jcol) {
00405 i__2 = *n;
00406 for (jrow = 1; jrow <= i__2; ++jrow) {
00407 ++j;
00408 i__3 = jrow + jcol * b_dim1;
00409 rwork[j] = b[i__3].r;
00410
00411 }
00412
00413 }
00414 dgemm_("T", "N", n, nrhs, n, &c_b10, &rwork[irwvt], n, &rwork[irwb],
00415 n, &c_b35, &rwork[irwrb], n);
00416 j = irwb - 1;
00417 i__1 = *nrhs;
00418 for (jcol = 1; jcol <= i__1; ++jcol) {
00419 i__2 = *n;
00420 for (jrow = 1; jrow <= i__2; ++jrow) {
00421 ++j;
00422 rwork[j] = d_imag(&b[jrow + jcol * b_dim1]);
00423
00424 }
00425
00426 }
00427 dgemm_("T", "N", n, nrhs, n, &c_b10, &rwork[irwvt], n, &rwork[irwb],
00428 n, &c_b35, &rwork[irwib], n);
00429 jreal = irwrb - 1;
00430 jimag = irwib - 1;
00431 i__1 = *nrhs;
00432 for (jcol = 1; jcol <= i__1; ++jcol) {
00433 i__2 = *n;
00434 for (jrow = 1; jrow <= i__2; ++jrow) {
00435 ++jreal;
00436 ++jimag;
00437 i__3 = jrow + jcol * b_dim1;
00438 i__4 = jreal;
00439 i__5 = jimag;
00440 z__1.r = rwork[i__4], z__1.i = rwork[i__5];
00441 b[i__3].r = z__1.r, b[i__3].i = z__1.i;
00442
00443 }
00444
00445 }
00446
00447
00448
00449 dlascl_("G", &c__0, &c__0, &c_b10, &orgnrm, n, &c__1, &d__[1], n,
00450 info);
00451 dlasrt_("D", n, &d__[1], info);
00452 zlascl_("G", &c__0, &c__0, &orgnrm, &c_b10, n, nrhs, &b[b_offset],
00453 ldb, info);
00454
00455 return 0;
00456 }
00457
00458
00459
00460 nlvl = (integer) (log((doublereal) (*n) / (doublereal) (*smlsiz + 1)) /
00461 log(2.)) + 1;
00462
00463 smlszp = *smlsiz + 1;
00464
00465 u = 1;
00466 vt = *smlsiz * *n + 1;
00467 difl = vt + smlszp * *n;
00468 difr = difl + nlvl * *n;
00469 z__ = difr + (nlvl * *n << 1);
00470 c__ = z__ + nlvl * *n;
00471 s = c__ + *n;
00472 poles = s + *n;
00473 givnum = poles + (nlvl << 1) * *n;
00474 nrwork = givnum + (nlvl << 1) * *n;
00475 bx = 1;
00476
00477 irwrb = nrwork;
00478 irwib = irwrb + *smlsiz * *nrhs;
00479 irwb = irwib + *smlsiz * *nrhs;
00480
00481 sizei = *n + 1;
00482 k = sizei + *n;
00483 givptr = k + *n;
00484 perm = givptr + *n;
00485 givcol = perm + nlvl * *n;
00486 iwk = givcol + (nlvl * *n << 1);
00487
00488 st = 1;
00489 sqre = 0;
00490 icmpq1 = 1;
00491 icmpq2 = 0;
00492 nsub = 0;
00493
00494 i__1 = *n;
00495 for (i__ = 1; i__ <= i__1; ++i__) {
00496 if ((d__1 = d__[i__], abs(d__1)) < eps) {
00497 d__[i__] = d_sign(&eps, &d__[i__]);
00498 }
00499
00500 }
00501
00502 i__1 = nm1;
00503 for (i__ = 1; i__ <= i__1; ++i__) {
00504 if ((d__1 = e[i__], abs(d__1)) < eps || i__ == nm1) {
00505 ++nsub;
00506 iwork[nsub] = st;
00507
00508
00509
00510
00511 if (i__ < nm1) {
00512
00513
00514
00515 nsize = i__ - st + 1;
00516 iwork[sizei + nsub - 1] = nsize;
00517 } else if ((d__1 = e[i__], abs(d__1)) >= eps) {
00518
00519
00520
00521 nsize = *n - st + 1;
00522 iwork[sizei + nsub - 1] = nsize;
00523 } else {
00524
00525
00526
00527
00528
00529 nsize = i__ - st + 1;
00530 iwork[sizei + nsub - 1] = nsize;
00531 ++nsub;
00532 iwork[nsub] = *n;
00533 iwork[sizei + nsub - 1] = 1;
00534 zcopy_(nrhs, &b[*n + b_dim1], ldb, &work[bx + nm1], n);
00535 }
00536 st1 = st - 1;
00537 if (nsize == 1) {
00538
00539
00540
00541
00542 zcopy_(nrhs, &b[st + b_dim1], ldb, &work[bx + st1], n);
00543 } else if (nsize <= *smlsiz) {
00544
00545
00546
00547 dlaset_("A", &nsize, &nsize, &c_b35, &c_b10, &rwork[vt + st1],
00548 n);
00549 dlaset_("A", &nsize, &nsize, &c_b35, &c_b10, &rwork[u + st1],
00550 n);
00551 dlasdq_("U", &c__0, &nsize, &nsize, &nsize, &c__0, &d__[st], &
00552 e[st], &rwork[vt + st1], n, &rwork[u + st1], n, &
00553 rwork[nrwork], &c__1, &rwork[nrwork], info)
00554 ;
00555 if (*info != 0) {
00556 return 0;
00557 }
00558
00559
00560
00561
00562
00563 j = irwb - 1;
00564 i__2 = *nrhs;
00565 for (jcol = 1; jcol <= i__2; ++jcol) {
00566 i__3 = st + nsize - 1;
00567 for (jrow = st; jrow <= i__3; ++jrow) {
00568 ++j;
00569 i__4 = jrow + jcol * b_dim1;
00570 rwork[j] = b[i__4].r;
00571
00572 }
00573
00574 }
00575 dgemm_("T", "N", &nsize, nrhs, &nsize, &c_b10, &rwork[u + st1]
00576 , n, &rwork[irwb], &nsize, &c_b35, &rwork[irwrb], &
00577 nsize);
00578 j = irwb - 1;
00579 i__2 = *nrhs;
00580 for (jcol = 1; jcol <= i__2; ++jcol) {
00581 i__3 = st + nsize - 1;
00582 for (jrow = st; jrow <= i__3; ++jrow) {
00583 ++j;
00584 rwork[j] = d_imag(&b[jrow + jcol * b_dim1]);
00585
00586 }
00587
00588 }
00589 dgemm_("T", "N", &nsize, nrhs, &nsize, &c_b10, &rwork[u + st1]
00590 , n, &rwork[irwb], &nsize, &c_b35, &rwork[irwib], &
00591 nsize);
00592 jreal = irwrb - 1;
00593 jimag = irwib - 1;
00594 i__2 = *nrhs;
00595 for (jcol = 1; jcol <= i__2; ++jcol) {
00596 i__3 = st + nsize - 1;
00597 for (jrow = st; jrow <= i__3; ++jrow) {
00598 ++jreal;
00599 ++jimag;
00600 i__4 = jrow + jcol * b_dim1;
00601 i__5 = jreal;
00602 i__6 = jimag;
00603 z__1.r = rwork[i__5], z__1.i = rwork[i__6];
00604 b[i__4].r = z__1.r, b[i__4].i = z__1.i;
00605
00606 }
00607
00608 }
00609
00610 zlacpy_("A", &nsize, nrhs, &b[st + b_dim1], ldb, &work[bx +
00611 st1], n);
00612 } else {
00613
00614
00615
00616 dlasda_(&icmpq1, smlsiz, &nsize, &sqre, &d__[st], &e[st], &
00617 rwork[u + st1], n, &rwork[vt + st1], &iwork[k + st1],
00618 &rwork[difl + st1], &rwork[difr + st1], &rwork[z__ +
00619 st1], &rwork[poles + st1], &iwork[givptr + st1], &
00620 iwork[givcol + st1], n, &iwork[perm + st1], &rwork[
00621 givnum + st1], &rwork[c__ + st1], &rwork[s + st1], &
00622 rwork[nrwork], &iwork[iwk], info);
00623 if (*info != 0) {
00624 return 0;
00625 }
00626 bxst = bx + st1;
00627 zlalsa_(&icmpq2, smlsiz, &nsize, nrhs, &b[st + b_dim1], ldb, &
00628 work[bxst], n, &rwork[u + st1], n, &rwork[vt + st1], &
00629 iwork[k + st1], &rwork[difl + st1], &rwork[difr + st1]
00630 , &rwork[z__ + st1], &rwork[poles + st1], &iwork[
00631 givptr + st1], &iwork[givcol + st1], n, &iwork[perm +
00632 st1], &rwork[givnum + st1], &rwork[c__ + st1], &rwork[
00633 s + st1], &rwork[nrwork], &iwork[iwk], info);
00634 if (*info != 0) {
00635 return 0;
00636 }
00637 }
00638 st = i__ + 1;
00639 }
00640
00641 }
00642
00643
00644
00645 tol = rcnd * (d__1 = d__[idamax_(n, &d__[1], &c__1)], abs(d__1));
00646
00647 i__1 = *n;
00648 for (i__ = 1; i__ <= i__1; ++i__) {
00649
00650
00651
00652
00653 if ((d__1 = d__[i__], abs(d__1)) <= tol) {
00654 zlaset_("A", &c__1, nrhs, &c_b1, &c_b1, &work[bx + i__ - 1], n);
00655 } else {
00656 ++(*rank);
00657 zlascl_("G", &c__0, &c__0, &d__[i__], &c_b10, &c__1, nrhs, &work[
00658 bx + i__ - 1], n, info);
00659 }
00660 d__[i__] = (d__1 = d__[i__], abs(d__1));
00661
00662 }
00663
00664
00665
00666 icmpq2 = 1;
00667 i__1 = nsub;
00668 for (i__ = 1; i__ <= i__1; ++i__) {
00669 st = iwork[i__];
00670 st1 = st - 1;
00671 nsize = iwork[sizei + i__ - 1];
00672 bxst = bx + st1;
00673 if (nsize == 1) {
00674 zcopy_(nrhs, &work[bxst], n, &b[st + b_dim1], ldb);
00675 } else if (nsize <= *smlsiz) {
00676
00677
00678
00679
00680
00681
00682
00683
00684 j = bxst - *n - 1;
00685 jreal = irwb - 1;
00686 i__2 = *nrhs;
00687 for (jcol = 1; jcol <= i__2; ++jcol) {
00688 j += *n;
00689 i__3 = nsize;
00690 for (jrow = 1; jrow <= i__3; ++jrow) {
00691 ++jreal;
00692 i__4 = j + jrow;
00693 rwork[jreal] = work[i__4].r;
00694
00695 }
00696
00697 }
00698 dgemm_("T", "N", &nsize, nrhs, &nsize, &c_b10, &rwork[vt + st1],
00699 n, &rwork[irwb], &nsize, &c_b35, &rwork[irwrb], &nsize);
00700 j = bxst - *n - 1;
00701 jimag = irwb - 1;
00702 i__2 = *nrhs;
00703 for (jcol = 1; jcol <= i__2; ++jcol) {
00704 j += *n;
00705 i__3 = nsize;
00706 for (jrow = 1; jrow <= i__3; ++jrow) {
00707 ++jimag;
00708 rwork[jimag] = d_imag(&work[j + jrow]);
00709
00710 }
00711
00712 }
00713 dgemm_("T", "N", &nsize, nrhs, &nsize, &c_b10, &rwork[vt + st1],
00714 n, &rwork[irwb], &nsize, &c_b35, &rwork[irwib], &nsize);
00715 jreal = irwrb - 1;
00716 jimag = irwib - 1;
00717 i__2 = *nrhs;
00718 for (jcol = 1; jcol <= i__2; ++jcol) {
00719 i__3 = st + nsize - 1;
00720 for (jrow = st; jrow <= i__3; ++jrow) {
00721 ++jreal;
00722 ++jimag;
00723 i__4 = jrow + jcol * b_dim1;
00724 i__5 = jreal;
00725 i__6 = jimag;
00726 z__1.r = rwork[i__5], z__1.i = rwork[i__6];
00727 b[i__4].r = z__1.r, b[i__4].i = z__1.i;
00728
00729 }
00730
00731 }
00732 } else {
00733 zlalsa_(&icmpq2, smlsiz, &nsize, nrhs, &work[bxst], n, &b[st +
00734 b_dim1], ldb, &rwork[u + st1], n, &rwork[vt + st1], &
00735 iwork[k + st1], &rwork[difl + st1], &rwork[difr + st1], &
00736 rwork[z__ + st1], &rwork[poles + st1], &iwork[givptr +
00737 st1], &iwork[givcol + st1], n, &iwork[perm + st1], &rwork[
00738 givnum + st1], &rwork[c__ + st1], &rwork[s + st1], &rwork[
00739 nrwork], &iwork[iwk], info);
00740 if (*info != 0) {
00741 return 0;
00742 }
00743 }
00744
00745 }
00746
00747
00748
00749 dlascl_("G", &c__0, &c__0, &c_b10, &orgnrm, n, &c__1, &d__[1], n, info);
00750 dlasrt_("D", n, &d__[1], info);
00751 zlascl_("G", &c__0, &c__0, &orgnrm, &c_b10, n, nrhs, &b[b_offset], ldb,
00752 info);
00753
00754 return 0;
00755
00756
00757
00758 }