00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015
00016
00017
00018 struct {
00019 integer infot, iounit;
00020 logical ok, lerr;
00021 } infoc_;
00022
00023 #define infoc_1 infoc_
00024
00025 struct {
00026 char srnamt[32];
00027 } srnamc_;
00028
00029 #define srnamc_1 srnamc_
00030
00031
00032
00033 static integer c__2 = 2;
00034 static integer c__9 = 9;
00035 static integer c__25 = 25;
00036 static integer c__1 = 1;
00037 static integer c__3 = 3;
00038 static doublereal c_b28 = 1.;
00039 static doublereal c_b29 = 0.;
00040 static integer c__0 = 0;
00041 static integer c_n1 = -1;
00042 static doublereal c_b96 = -1.;
00043
00044 int ddrvls_(logical *dotype, integer *nm, integer *mval,
00045 integer *nn, integer *nval, integer *nns, integer *nsval, integer *
00046 nnb, integer *nbval, integer *nxval, doublereal *thresh, logical *
00047 tsterr, doublereal *a, doublereal *copya, doublereal *b, doublereal *
00048 copyb, doublereal *c__, doublereal *s, doublereal *copys, doublereal *
00049 work, integer *iwork, integer *nout)
00050 {
00051
00052
00053 static integer iseedy[4] = { 1988,1989,1990,1991 };
00054
00055
00056 static char fmt_9999[] = "(\002 TRANS='\002,a1,\002', M=\002,i5,\002, N"
00057 "=\002,i5,\002, NRHS=\002,i4,\002, NB=\002,i4,\002, type\002,i2"
00058 ",\002, test(\002,i2,\002)=\002,g12.5)";
00059 static char fmt_9998[] = "(\002 M=\002,i5,\002, N=\002,i5,\002, NRHS="
00060 "\002,i4,\002, NB=\002,i4,\002, type\002,i2,\002, test(\002,i2"
00061 ",\002)=\002,g12.5)";
00062
00063
00064 integer i__1, i__2, i__3, i__4, i__5, i__6;
00065 doublereal d__1, d__2;
00066
00067
00068 int s_copy(char *, char *, ftnlen, ftnlen);
00069 double sqrt(doublereal), log(doublereal);
00070 integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void);
00071
00072
00073 integer i__, j, k, m, n, nb, im, in, lda, ldb, inb;
00074 doublereal eps;
00075 integer ins, info;
00076 char path[3];
00077 integer rank, nrhs, nlvl, nrun;
00078 extern int alahd_(integer *, char *), dscal_(
00079 integer *, doublereal *, doublereal *, integer *);
00080 integer nfail, iseed[4];
00081 extern int dgemm_(char *, char *, integer *, integer *,
00082 integer *, doublereal *, doublereal *, integer *, doublereal *,
00083 integer *, doublereal *, doublereal *, integer *);
00084 integer crank;
00085 extern int dgels_(char *, integer *, integer *, integer *
00086 , doublereal *, integer *, doublereal *, integer *, doublereal *,
00087 integer *, integer *);
00088 integer irank;
00089 doublereal rcond;
00090 extern doublereal dasum_(integer *, doublereal *, integer *);
00091 integer itran, mnmin, ncols;
00092 doublereal norma, normb;
00093 extern doublereal dqrt12_(integer *, integer *, doublereal *, integer *,
00094 doublereal *, doublereal *, integer *), dqrt14_(char *, integer *,
00095 integer *, integer *, doublereal *, integer *, doublereal *,
00096 integer *, doublereal *, integer *), dqrt17_(char *,
00097 integer *, integer *, integer *, integer *, doublereal *, integer
00098 *, doublereal *, integer *, doublereal *, integer *, doublereal *,
00099 doublereal *, integer *);
00100 extern int daxpy_(integer *, doublereal *, doublereal *,
00101 integer *, doublereal *, integer *);
00102 char trans[1];
00103 integer nerrs, itype;
00104 extern int dqrt13_(integer *, integer *, integer *,
00105 doublereal *, integer *, doublereal *, integer *);
00106 integer lwork;
00107 extern int dqrt15_(integer *, integer *, integer *,
00108 integer *, integer *, doublereal *, integer *, doublereal *,
00109 integer *, doublereal *, integer *, doublereal *, doublereal *,
00110 integer *, doublereal *, integer *), dqrt16_(char *, integer *,
00111 integer *, integer *, doublereal *, integer *, doublereal *,
00112 integer *, doublereal *, integer *, doublereal *, doublereal *);
00113 integer nrows, lwlsy;
00114 extern doublereal dlamch_(char *);
00115 extern int alaerh_(char *, char *, integer *, integer *,
00116 char *, integer *, integer *, integer *, integer *, integer *,
00117 integer *, integer *, integer *, integer *);
00118 integer iscale;
00119 extern int dgelsd_(integer *, integer *, integer *,
00120 doublereal *, integer *, doublereal *, integer *, doublereal *,
00121 doublereal *, integer *, doublereal *, integer *, integer *,
00122 integer *), dlacpy_(char *, integer *, integer *, doublereal *,
00123 integer *, doublereal *, integer *), dgelss_(integer *,
00124 integer *, integer *, doublereal *, integer *, doublereal *,
00125 integer *, doublereal *, doublereal *, integer *, doublereal *,
00126 integer *, integer *), alasvm_(char *, integer *, integer *,
00127 integer *, integer *), dgelsx_(integer *, integer *,
00128 integer *, doublereal *, integer *, doublereal *, integer *,
00129 integer *, doublereal *, integer *, doublereal *, integer *),
00130 dgelsy_(integer *, integer *, integer *, doublereal *, integer *,
00131 doublereal *, integer *, integer *, doublereal *, integer *,
00132 doublereal *, integer *, integer *), dlarnv_(integer *, integer *,
00133 integer *, doublereal *), derrls_(char *, integer *),
00134 xlaenv_(integer *, integer *);
00135 integer ldwork;
00136 doublereal result[18];
00137
00138
00139 static cilist io___35 = { 0, 0, 0, fmt_9999, 0 };
00140 static cilist io___40 = { 0, 0, 0, fmt_9998, 0 };
00141 static cilist io___42 = { 0, 0, 0, fmt_9998, 0 };
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
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265 --iwork;
00266 --work;
00267 --copys;
00268 --s;
00269 --c__;
00270 --copyb;
00271 --b;
00272 --copya;
00273 --a;
00274 --nxval;
00275 --nbval;
00276 --nsval;
00277 --nval;
00278 --mval;
00279 --dotype;
00280
00281
00282
00283
00284
00285
00286
00287 s_copy(path, "Double precision", (ftnlen)1, (ftnlen)16);
00288 s_copy(path + 1, "LS", (ftnlen)2, (ftnlen)2);
00289 nrun = 0;
00290 nfail = 0;
00291 nerrs = 0;
00292 for (i__ = 1; i__ <= 4; ++i__) {
00293 iseed[i__ - 1] = iseedy[i__ - 1];
00294
00295 }
00296 eps = dlamch_("Epsilon");
00297
00298
00299
00300 rcond = sqrt(eps) - (sqrt(eps) - eps) / 2;
00301
00302
00303
00304 xlaenv_(&c__2, &c__2);
00305 xlaenv_(&c__9, &c__25);
00306 if (*tsterr) {
00307 derrls_(path, nout);
00308 }
00309
00310
00311
00312 if ((*nm == 0 || *nn == 0) && *thresh == 0.) {
00313 alahd_(nout, path);
00314 }
00315 infoc_1.infot = 0;
00316 xlaenv_(&c__2, &c__2);
00317 xlaenv_(&c__9, &c__25);
00318
00319 i__1 = *nm;
00320 for (im = 1; im <= i__1; ++im) {
00321 m = mval[im];
00322 lda = max(1,m);
00323
00324 i__2 = *nn;
00325 for (in = 1; in <= i__2; ++in) {
00326 n = nval[in];
00327 mnmin = min(m,n);
00328
00329 i__3 = max(1,m);
00330 ldb = max(i__3,n);
00331
00332 i__3 = *nns;
00333 for (ins = 1; ins <= i__3; ++ins) {
00334 nrhs = nsval[ins];
00335
00336
00337 d__1 = 1., d__2 = (doublereal) mnmin;
00338 i__4 = (integer) (log(max(d__1,d__2) / 26.) / log(2.)) + 1;
00339 nlvl = max(i__4,0);
00340
00341 i__4 = 1, i__5 = (m + nrhs) * (n + 2), i__4 = max(i__4,i__5),
00342 i__5 = (n + nrhs) * (m + 2), i__4 = max(i__4,i__5),
00343 i__5 = m * n + (mnmin << 2) + max(m,n), i__4 = max(
00344 i__4,i__5), i__5 = mnmin * 12 + mnmin * 50 + (mnmin <<
00345 3) * nlvl + mnmin * nrhs + 676;
00346 lwork = max(i__4,i__5);
00347
00348 for (irank = 1; irank <= 2; ++irank) {
00349 for (iscale = 1; iscale <= 3; ++iscale) {
00350 itype = (irank - 1) * 3 + iscale;
00351 if (! dotype[itype]) {
00352 goto L110;
00353 }
00354
00355 if (irank == 1) {
00356
00357
00358
00359
00360
00361 dqrt13_(&iscale, &m, &n, ©a[1], &lda, &norma,
00362 iseed);
00363 i__4 = *nnb;
00364 for (inb = 1; inb <= i__4; ++inb) {
00365 nb = nbval[inb];
00366 xlaenv_(&c__1, &nb);
00367 xlaenv_(&c__3, &nxval[inb]);
00368
00369 for (itran = 1; itran <= 2; ++itran) {
00370 if (itran == 1) {
00371 *(unsigned char *)trans = 'N';
00372 nrows = m;
00373 ncols = n;
00374 } else {
00375 *(unsigned char *)trans = 'T';
00376 nrows = n;
00377 ncols = m;
00378 }
00379 ldwork = max(1,ncols);
00380
00381
00382
00383 if (ncols > 0) {
00384 i__5 = ncols * nrhs;
00385 dlarnv_(&c__2, iseed, &i__5, &work[1])
00386 ;
00387 i__5 = ncols * nrhs;
00388 d__1 = 1. / (doublereal) ncols;
00389 dscal_(&i__5, &d__1, &work[1], &c__1);
00390 }
00391 dgemm_(trans, "No transpose", &nrows, &
00392 nrhs, &ncols, &c_b28, ©a[1], &
00393 lda, &work[1], &ldwork, &c_b29, &
00394 b[1], &ldb)
00395 ;
00396 dlacpy_("Full", &nrows, &nrhs, &b[1], &
00397 ldb, ©b[1], &ldb);
00398
00399
00400
00401 if (m > 0 && n > 0) {
00402 dlacpy_("Full", &m, &n, ©a[1], &
00403 lda, &a[1], &lda);
00404 dlacpy_("Full", &nrows, &nrhs, ©b[
00405 1], &ldb, &b[1], &ldb);
00406 }
00407 s_copy(srnamc_1.srnamt, "DGELS ", (ftnlen)
00408 32, (ftnlen)6);
00409 dgels_(trans, &m, &n, &nrhs, &a[1], &lda,
00410 &b[1], &ldb, &work[1], &lwork, &
00411 info);
00412 if (info != 0) {
00413 alaerh_(path, "DGELS ", &info, &c__0,
00414 trans, &m, &n, &nrhs, &c_n1, &
00415 nb, &itype, &nfail, &nerrs,
00416 nout);
00417 }
00418
00419
00420
00421 ldwork = max(1,nrows);
00422 if (nrows > 0 && nrhs > 0) {
00423 dlacpy_("Full", &nrows, &nrhs, ©b[
00424 1], &ldb, &c__[1], &ldb);
00425 }
00426 dqrt16_(trans, &m, &n, &nrhs, ©a[1], &
00427 lda, &b[1], &ldb, &c__[1], &ldb, &
00428 work[1], result);
00429
00430 if (itran == 1 && m >= n || itran == 2 &&
00431 m < n) {
00432
00433
00434
00435 result[1] = dqrt17_(trans, &c__1, &m,
00436 &n, &nrhs, ©a[1], &lda, &
00437 b[1], &ldb, ©b[1], &ldb, &
00438 c__[1], &work[1], &lwork);
00439 } else {
00440
00441
00442
00443 result[1] = dqrt14_(trans, &m, &n, &
00444 nrhs, ©a[1], &lda, &b[1],
00445 &ldb, &work[1], &lwork);
00446 }
00447
00448
00449
00450
00451 for (k = 1; k <= 2; ++k) {
00452 if (result[k - 1] >= *thresh) {
00453 if (nfail == 0 && nerrs == 0) {
00454 alahd_(nout, path);
00455 }
00456 io___35.ciunit = *nout;
00457 s_wsfe(&io___35);
00458 do_fio(&c__1, trans, (ftnlen)1);
00459 do_fio(&c__1, (char *)&m, (ftnlen)
00460 sizeof(integer));
00461 do_fio(&c__1, (char *)&n, (ftnlen)
00462 sizeof(integer));
00463 do_fio(&c__1, (char *)&nrhs, (
00464 ftnlen)sizeof(integer));
00465 do_fio(&c__1, (char *)&nb, (
00466 ftnlen)sizeof(integer));
00467 do_fio(&c__1, (char *)&itype, (
00468 ftnlen)sizeof(integer));
00469 do_fio(&c__1, (char *)&k, (ftnlen)
00470 sizeof(integer));
00471 do_fio(&c__1, (char *)&result[k -
00472 1], (ftnlen)sizeof(
00473 doublereal));
00474 e_wsfe();
00475 ++nfail;
00476 }
00477
00478 }
00479 nrun += 2;
00480
00481 }
00482
00483 }
00484 }
00485
00486
00487
00488
00489 dqrt15_(&iscale, &irank, &m, &n, &nrhs, ©a[1], &
00490 lda, ©b[1], &ldb, ©s[1], &rank, &
00491 norma, &normb, iseed, &work[1], &lwork);
00492
00493
00494
00495
00496
00497 i__4 = n;
00498 for (j = 1; j <= i__4; ++j) {
00499 iwork[j] = 0;
00500
00501 }
00502 ldwork = max(1,m);
00503
00504
00505
00506
00507
00508
00509
00510 dlacpy_("Full", &m, &n, ©a[1], &lda, &a[1], &lda);
00511 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &b[1], &
00512 ldb);
00513
00514 s_copy(srnamc_1.srnamt, "DGELSX", (ftnlen)32, (ftnlen)
00515 6);
00516 dgelsx_(&m, &n, &nrhs, &a[1], &lda, &b[1], &ldb, &
00517 iwork[1], &rcond, &crank, &work[1], &info);
00518 if (info != 0) {
00519 alaerh_(path, "DGELSX", &info, &c__0, " ", &m, &n,
00520 &nrhs, &c_n1, &nb, &itype, &nfail, &
00521 nerrs, nout);
00522 }
00523
00524
00525
00526
00527
00528
00529 result[2] = dqrt12_(&crank, &crank, &a[1], &lda, &
00530 copys[1], &work[1], &lwork);
00531
00532
00533
00534
00535 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &work[1],
00536 &ldwork);
00537 dqrt16_("No transpose", &m, &n, &nrhs, ©a[1], &
00538 lda, &b[1], &ldb, &work[1], &ldwork, &work[m *
00539 nrhs + 1], &result[3]);
00540
00541
00542
00543
00544 result[4] = 0.;
00545 if (m > crank) {
00546 result[4] = dqrt17_("No transpose", &c__1, &m, &n,
00547 &nrhs, ©a[1], &lda, &b[1], &ldb, &
00548 copyb[1], &ldb, &c__[1], &work[1], &lwork);
00549 }
00550
00551
00552
00553
00554 result[5] = 0.;
00555
00556 if (n > crank) {
00557 result[5] = dqrt14_("No transpose", &m, &n, &nrhs,
00558 ©a[1], &lda, &b[1], &ldb, &work[1], &
00559 lwork);
00560 }
00561
00562
00563
00564
00565 for (k = 3; k <= 6; ++k) {
00566 if (result[k - 1] >= *thresh) {
00567 if (nfail == 0 && nerrs == 0) {
00568 alahd_(nout, path);
00569 }
00570 io___40.ciunit = *nout;
00571 s_wsfe(&io___40);
00572 do_fio(&c__1, (char *)&m, (ftnlen)sizeof(
00573 integer));
00574 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00575 integer));
00576 do_fio(&c__1, (char *)&nrhs, (ftnlen)sizeof(
00577 integer));
00578 do_fio(&c__1, (char *)&nb, (ftnlen)sizeof(
00579 integer));
00580 do_fio(&c__1, (char *)&itype, (ftnlen)sizeof(
00581 integer));
00582 do_fio(&c__1, (char *)&k, (ftnlen)sizeof(
00583 integer));
00584 do_fio(&c__1, (char *)&result[k - 1], (ftnlen)
00585 sizeof(doublereal));
00586 e_wsfe();
00587 ++nfail;
00588 }
00589
00590 }
00591 nrun += 4;
00592
00593
00594
00595 i__4 = *nnb;
00596 for (inb = 1; inb <= i__4; ++inb) {
00597 nb = nbval[inb];
00598 xlaenv_(&c__1, &nb);
00599 xlaenv_(&c__3, &nxval[inb]);
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610 i__5 = n;
00611 for (j = 1; j <= i__5; ++j) {
00612 iwork[j] = 0;
00613
00614 }
00615
00616
00617
00618
00619 i__5 = 1, i__6 = mnmin + (n << 1) + nb * (n + 1),
00620 i__5 = max(i__5,i__6), i__6 = (mnmin << 1)
00621 + nb * nrhs;
00622 lwlsy = max(i__5,i__6);
00623
00624 dlacpy_("Full", &m, &n, ©a[1], &lda, &a[1], &
00625 lda);
00626 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &b[1],
00627 &ldb);
00628
00629 s_copy(srnamc_1.srnamt, "DGELSY", (ftnlen)32, (
00630 ftnlen)6);
00631 dgelsy_(&m, &n, &nrhs, &a[1], &lda, &b[1], &ldb, &
00632 iwork[1], &rcond, &crank, &work[1], &
00633 lwlsy, &info);
00634 if (info != 0) {
00635 alaerh_(path, "DGELSY", &info, &c__0, " ", &m,
00636 &n, &nrhs, &c_n1, &nb, &itype, &
00637 nfail, &nerrs, nout);
00638 }
00639
00640
00641
00642
00643 result[6] = dqrt12_(&crank, &crank, &a[1], &lda, &
00644 copys[1], &work[1], &lwork);
00645
00646
00647
00648
00649 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &work[
00650 1], &ldwork);
00651 dqrt16_("No transpose", &m, &n, &nrhs, ©a[1],
00652 &lda, &b[1], &ldb, &work[1], &ldwork, &
00653 work[m * nrhs + 1], &result[7]);
00654
00655
00656
00657
00658 result[8] = 0.;
00659 if (m > crank) {
00660 result[8] = dqrt17_("No transpose", &c__1, &m,
00661 &n, &nrhs, ©a[1], &lda, &b[1], &
00662 ldb, ©b[1], &ldb, &c__[1], &work[
00663 1], &lwork);
00664 }
00665
00666
00667
00668
00669 result[9] = 0.;
00670
00671 if (n > crank) {
00672 result[9] = dqrt14_("No transpose", &m, &n, &
00673 nrhs, ©a[1], &lda, &b[1], &ldb, &
00674 work[1], &lwork);
00675 }
00676
00677
00678
00679
00680
00681
00682
00683 dlacpy_("Full", &m, &n, ©a[1], &lda, &a[1], &
00684 lda);
00685 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &b[1],
00686 &ldb);
00687 s_copy(srnamc_1.srnamt, "DGELSS", (ftnlen)32, (
00688 ftnlen)6);
00689 dgelss_(&m, &n, &nrhs, &a[1], &lda, &b[1], &ldb, &
00690 s[1], &rcond, &crank, &work[1], &lwork, &
00691 info);
00692 if (info != 0) {
00693 alaerh_(path, "DGELSS", &info, &c__0, " ", &m,
00694 &n, &nrhs, &c_n1, &nb, &itype, &
00695 nfail, &nerrs, nout);
00696 }
00697
00698
00699
00700
00701
00702
00703 if (rank > 0) {
00704 daxpy_(&mnmin, &c_b96, ©s[1], &c__1, &s[1]
00705 , &c__1);
00706 result[10] = dasum_(&mnmin, &s[1], &c__1) /
00707 dasum_(&mnmin, ©s[1], &c__1) / (
00708 eps * (doublereal) mnmin);
00709 } else {
00710 result[10] = 0.;
00711 }
00712
00713
00714
00715 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &work[
00716 1], &ldwork);
00717 dqrt16_("No transpose", &m, &n, &nrhs, ©a[1],
00718 &lda, &b[1], &ldb, &work[1], &ldwork, &
00719 work[m * nrhs + 1], &result[11]);
00720
00721
00722
00723 result[12] = 0.;
00724 if (m > crank) {
00725 result[12] = dqrt17_("No transpose", &c__1, &
00726 m, &n, &nrhs, ©a[1], &lda, &b[1],
00727 &ldb, ©b[1], &ldb, &c__[1], &work[
00728 1], &lwork);
00729 }
00730
00731
00732
00733 result[13] = 0.;
00734 if (n > crank) {
00735 result[13] = dqrt14_("No transpose", &m, &n, &
00736 nrhs, ©a[1], &lda, &b[1], &ldb, &
00737 work[1], &lwork);
00738 }
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748 i__5 = n;
00749 for (j = 1; j <= i__5; ++j) {
00750 iwork[j] = 0;
00751
00752 }
00753
00754 dlacpy_("Full", &m, &n, ©a[1], &lda, &a[1], &
00755 lda);
00756 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &b[1],
00757 &ldb);
00758
00759 s_copy(srnamc_1.srnamt, "DGELSD", (ftnlen)32, (
00760 ftnlen)6);
00761 dgelsd_(&m, &n, &nrhs, &a[1], &lda, &b[1], &ldb, &
00762 s[1], &rcond, &crank, &work[1], &lwork, &
00763 iwork[1], &info);
00764 if (info != 0) {
00765 alaerh_(path, "DGELSD", &info, &c__0, " ", &m,
00766 &n, &nrhs, &c_n1, &nb, &itype, &
00767 nfail, &nerrs, nout);
00768 }
00769
00770
00771
00772 if (rank > 0) {
00773 daxpy_(&mnmin, &c_b96, ©s[1], &c__1, &s[1]
00774 , &c__1);
00775 result[14] = dasum_(&mnmin, &s[1], &c__1) /
00776 dasum_(&mnmin, ©s[1], &c__1) / (
00777 eps * (doublereal) mnmin);
00778 } else {
00779 result[14] = 0.;
00780 }
00781
00782
00783
00784 dlacpy_("Full", &m, &nrhs, ©b[1], &ldb, &work[
00785 1], &ldwork);
00786 dqrt16_("No transpose", &m, &n, &nrhs, ©a[1],
00787 &lda, &b[1], &ldb, &work[1], &ldwork, &
00788 work[m * nrhs + 1], &result[15]);
00789
00790
00791
00792 result[16] = 0.;
00793 if (m > crank) {
00794 result[16] = dqrt17_("No transpose", &c__1, &
00795 m, &n, &nrhs, ©a[1], &lda, &b[1],
00796 &ldb, ©b[1], &ldb, &c__[1], &work[
00797 1], &lwork);
00798 }
00799
00800
00801
00802 result[17] = 0.;
00803 if (n > crank) {
00804 result[17] = dqrt14_("No transpose", &m, &n, &
00805 nrhs, ©a[1], &lda, &b[1], &ldb, &
00806 work[1], &lwork);
00807 }
00808
00809
00810
00811
00812 for (k = 7; k <= 18; ++k) {
00813 if (result[k - 1] >= *thresh) {
00814 if (nfail == 0 && nerrs == 0) {
00815 alahd_(nout, path);
00816 }
00817 io___42.ciunit = *nout;
00818 s_wsfe(&io___42);
00819 do_fio(&c__1, (char *)&m, (ftnlen)sizeof(
00820 integer));
00821 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00822 integer));
00823 do_fio(&c__1, (char *)&nrhs, (ftnlen)
00824 sizeof(integer));
00825 do_fio(&c__1, (char *)&nb, (ftnlen)sizeof(
00826 integer));
00827 do_fio(&c__1, (char *)&itype, (ftnlen)
00828 sizeof(integer));
00829 do_fio(&c__1, (char *)&k, (ftnlen)sizeof(
00830 integer));
00831 do_fio(&c__1, (char *)&result[k - 1], (
00832 ftnlen)sizeof(doublereal));
00833 e_wsfe();
00834 ++nfail;
00835 }
00836
00837 }
00838 nrun += 12;
00839
00840
00841 }
00842 L110:
00843 ;
00844 }
00845
00846 }
00847
00848 }
00849
00850 }
00851
00852 }
00853
00854
00855
00856 alasvm_(path, nout, &nfail, &nrun, &nerrs);
00857
00858 return 0;
00859
00860
00861
00862 }