00001 SUBROUTINE ZDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, LA,
00002 $ AFB, LAFB, ASAV, B, BSAV, X, XACT, S, WORK,
00003 $ RWORK, IWORK, NOUT )
00004
00005
00006
00007
00008
00009
00010 LOGICAL TSTERR
00011 INTEGER LA, LAFB, NN, NOUT, NRHS
00012 DOUBLE PRECISION THRESH
00013
00014
00015 LOGICAL DOTYPE( * )
00016 INTEGER IWORK( * ), NVAL( * )
00017 DOUBLE PRECISION RWORK( * ), S( * )
00018 COMPLEX*16 A( * ), AFB( * ), ASAV( * ), B( * ), BSAV( * ),
00019 $ WORK( * ), X( * ), XACT( * )
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
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 DOUBLE PRECISION ONE, ZERO
00092 PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
00093 INTEGER NTYPES
00094 PARAMETER ( NTYPES = 8 )
00095 INTEGER NTESTS
00096 PARAMETER ( NTESTS = 7 )
00097 INTEGER NTRAN
00098 PARAMETER ( NTRAN = 3 )
00099
00100
00101 LOGICAL EQUIL, NOFACT, PREFAC, TRFCON, ZEROT
00102 CHARACTER DIST, EQUED, FACT, TRANS, TYPE, XTYPE
00103 CHARACTER*3 PATH
00104 INTEGER I, I1, I2, IEQUED, IFACT, IKL, IKU, IMAT, IN,
00105 $ INFO, IOFF, ITRAN, IZERO, J, K, K1, KL, KU,
00106 $ LDA, LDAFB, LDB, MODE, N, NB, NBMIN, NERRS,
00107 $ NFACT, NFAIL, NIMAT, NKL, NKU, NRUN, NT
00108 DOUBLE PRECISION AINVNM, AMAX, ANORM, ANORMI, ANORMO, ANRMPV,
00109 $ CNDNUM, COLCND, RCOND, RCONDC, RCONDI, RCONDO,
00110 $ ROLDC, ROLDI, ROLDO, ROWCND, RPVGRW
00111
00112
00113 CHARACTER EQUEDS( 4 ), FACTS( 3 ), TRANSS( NTRAN )
00114 INTEGER ISEED( 4 ), ISEEDY( 4 )
00115 DOUBLE PRECISION RDUM( 1 ), RESULT( NTESTS )
00116
00117
00118 LOGICAL LSAME
00119 DOUBLE PRECISION DGET06, DLAMCH, ZLANGB, ZLANGE, ZLANTB
00120 EXTERNAL LSAME, DGET06, DLAMCH, ZLANGB, ZLANGE, ZLANTB
00121
00122
00123 EXTERNAL ALADHD, ALAERH, ALASVM, XLAENV, ZERRVX, ZGBEQU,
00124 $ ZGBSV, ZGBSVX, ZGBT01, ZGBT02, ZGBT05, ZGBTRF,
00125 $ ZGBTRS, ZGET04, ZLACPY, ZLAQGB, ZLARHS, ZLASET,
00126 $ ZLATB4, ZLATMS
00127
00128
00129 INTRINSIC ABS, DCMPLX, MAX, MIN
00130
00131
00132 LOGICAL LERR, OK
00133 CHARACTER*32 SRNAMT
00134 INTEGER INFOT, NUNIT
00135
00136
00137 COMMON / INFOC / INFOT, NUNIT, OK, LERR
00138 COMMON / SRNAMC / SRNAMT
00139
00140
00141 DATA ISEEDY / 1988, 1989, 1990, 1991 /
00142 DATA TRANSS / 'N', 'T', 'C' /
00143 DATA FACTS / 'F', 'N', 'E' /
00144 DATA EQUEDS / 'N', 'R', 'C', 'B' /
00145
00146
00147
00148
00149
00150 PATH( 1: 1 ) = 'Zomplex precision'
00151 PATH( 2: 3 ) = 'GB'
00152 NRUN = 0
00153 NFAIL = 0
00154 NERRS = 0
00155 DO 10 I = 1, 4
00156 ISEED( I ) = ISEEDY( I )
00157 10 CONTINUE
00158
00159
00160
00161 IF( TSTERR )
00162 $ CALL ZERRVX( PATH, NOUT )
00163 INFOT = 0
00164
00165
00166
00167 NB = 1
00168 NBMIN = 2
00169 CALL XLAENV( 1, NB )
00170 CALL XLAENV( 2, NBMIN )
00171
00172
00173
00174 DO 150 IN = 1, NN
00175 N = NVAL( IN )
00176 LDB = MAX( N, 1 )
00177 XTYPE = 'N'
00178
00179
00180
00181 NKL = MAX( 1, MIN( N, 4 ) )
00182 IF( N.EQ.0 )
00183 $ NKL = 1
00184 NKU = NKL
00185 NIMAT = NTYPES
00186 IF( N.LE.0 )
00187 $ NIMAT = 1
00188
00189 DO 140 IKL = 1, NKL
00190
00191
00192
00193
00194 IF( IKL.EQ.1 ) THEN
00195 KL = 0
00196 ELSE IF( IKL.EQ.2 ) THEN
00197 KL = MAX( N-1, 0 )
00198 ELSE IF( IKL.EQ.3 ) THEN
00199 KL = ( 3*N-1 ) / 4
00200 ELSE IF( IKL.EQ.4 ) THEN
00201 KL = ( N+1 ) / 4
00202 END IF
00203 DO 130 IKU = 1, NKU
00204
00205
00206
00207
00208
00209 IF( IKU.EQ.1 ) THEN
00210 KU = 0
00211 ELSE IF( IKU.EQ.2 ) THEN
00212 KU = MAX( N-1, 0 )
00213 ELSE IF( IKU.EQ.3 ) THEN
00214 KU = ( 3*N-1 ) / 4
00215 ELSE IF( IKU.EQ.4 ) THEN
00216 KU = ( N+1 ) / 4
00217 END IF
00218
00219
00220
00221
00222 LDA = KL + KU + 1
00223 LDAFB = 2*KL + KU + 1
00224 IF( LDA*N.GT.LA .OR. LDAFB*N.GT.LAFB ) THEN
00225 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
00226 $ CALL ALADHD( NOUT, PATH )
00227 IF( LDA*N.GT.LA ) THEN
00228 WRITE( NOUT, FMT = 9999 )LA, N, KL, KU,
00229 $ N*( KL+KU+1 )
00230 NERRS = NERRS + 1
00231 END IF
00232 IF( LDAFB*N.GT.LAFB ) THEN
00233 WRITE( NOUT, FMT = 9998 )LAFB, N, KL, KU,
00234 $ N*( 2*KL+KU+1 )
00235 NERRS = NERRS + 1
00236 END IF
00237 GO TO 130
00238 END IF
00239
00240 DO 120 IMAT = 1, NIMAT
00241
00242
00243
00244 IF( .NOT.DOTYPE( IMAT ) )
00245 $ GO TO 120
00246
00247
00248
00249 ZEROT = IMAT.GE.2 .AND. IMAT.LE.4
00250 IF( ZEROT .AND. N.LT.IMAT-1 )
00251 $ GO TO 120
00252
00253
00254
00255
00256 CALL ZLATB4( PATH, IMAT, N, N, TYPE, KL, KU, ANORM,
00257 $ MODE, CNDNUM, DIST )
00258 RCONDC = ONE / CNDNUM
00259
00260 SRNAMT = 'ZLATMS'
00261 CALL ZLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE,
00262 $ CNDNUM, ANORM, KL, KU, 'Z', A, LDA, WORK,
00263 $ INFO )
00264
00265
00266
00267 IF( INFO.NE.0 ) THEN
00268 CALL ALAERH( PATH, 'ZLATMS', INFO, 0, ' ', N, N,
00269 $ KL, KU, -1, IMAT, NFAIL, NERRS, NOUT )
00270 GO TO 120
00271 END IF
00272
00273
00274
00275
00276 IZERO = 0
00277 IF( ZEROT ) THEN
00278 IF( IMAT.EQ.2 ) THEN
00279 IZERO = 1
00280 ELSE IF( IMAT.EQ.3 ) THEN
00281 IZERO = N
00282 ELSE
00283 IZERO = N / 2 + 1
00284 END IF
00285 IOFF = ( IZERO-1 )*LDA
00286 IF( IMAT.LT.4 ) THEN
00287 I1 = MAX( 1, KU+2-IZERO )
00288 I2 = MIN( KL+KU+1, KU+1+( N-IZERO ) )
00289 DO 20 I = I1, I2
00290 A( IOFF+I ) = ZERO
00291 20 CONTINUE
00292 ELSE
00293 DO 40 J = IZERO, N
00294 DO 30 I = MAX( 1, KU+2-J ),
00295 $ MIN( KL+KU+1, KU+1+( N-J ) )
00296 A( IOFF+I ) = ZERO
00297 30 CONTINUE
00298 IOFF = IOFF + LDA
00299 40 CONTINUE
00300 END IF
00301 END IF
00302
00303
00304
00305 CALL ZLACPY( 'Full', KL+KU+1, N, A, LDA, ASAV, LDA )
00306
00307 DO 110 IEQUED = 1, 4
00308 EQUED = EQUEDS( IEQUED )
00309 IF( IEQUED.EQ.1 ) THEN
00310 NFACT = 3
00311 ELSE
00312 NFACT = 1
00313 END IF
00314
00315 DO 100 IFACT = 1, NFACT
00316 FACT = FACTS( IFACT )
00317 PREFAC = LSAME( FACT, 'F' )
00318 NOFACT = LSAME( FACT, 'N' )
00319 EQUIL = LSAME( FACT, 'E' )
00320
00321 IF( ZEROT ) THEN
00322 IF( PREFAC )
00323 $ GO TO 100
00324 RCONDO = ZERO
00325 RCONDI = ZERO
00326
00327 ELSE IF( .NOT.NOFACT ) THEN
00328
00329
00330
00331
00332
00333
00334 CALL ZLACPY( 'Full', KL+KU+1, N, ASAV, LDA,
00335 $ AFB( KL+1 ), LDAFB )
00336 IF( EQUIL .OR. IEQUED.GT.1 ) THEN
00337
00338
00339
00340
00341 CALL ZGBEQU( N, N, KL, KU, AFB( KL+1 ),
00342 $ LDAFB, S, S( N+1 ), ROWCND,
00343 $ COLCND, AMAX, INFO )
00344 IF( INFO.EQ.0 .AND. N.GT.0 ) THEN
00345 IF( LSAME( EQUED, 'R' ) ) THEN
00346 ROWCND = ZERO
00347 COLCND = ONE
00348 ELSE IF( LSAME( EQUED, 'C' ) ) THEN
00349 ROWCND = ONE
00350 COLCND = ZERO
00351 ELSE IF( LSAME( EQUED, 'B' ) ) THEN
00352 ROWCND = ZERO
00353 COLCND = ZERO
00354 END IF
00355
00356
00357
00358 CALL ZLAQGB( N, N, KL, KU, AFB( KL+1 ),
00359 $ LDAFB, S, S( N+1 ),
00360 $ ROWCND, COLCND, AMAX,
00361 $ EQUED )
00362 END IF
00363 END IF
00364
00365
00366
00367
00368 IF( EQUIL ) THEN
00369 ROLDO = RCONDO
00370 ROLDI = RCONDI
00371 END IF
00372
00373
00374
00375 ANORMO = ZLANGB( '1', N, KL, KU, AFB( KL+1 ),
00376 $ LDAFB, RWORK )
00377 ANORMI = ZLANGB( 'I', N, KL, KU, AFB( KL+1 ),
00378 $ LDAFB, RWORK )
00379
00380
00381
00382 CALL ZGBTRF( N, N, KL, KU, AFB, LDAFB, IWORK,
00383 $ INFO )
00384
00385
00386
00387 CALL ZLASET( 'Full', N, N, DCMPLX( ZERO ),
00388 $ DCMPLX( ONE ), WORK, LDB )
00389 SRNAMT = 'ZGBTRS'
00390 CALL ZGBTRS( 'No transpose', N, KL, KU, N,
00391 $ AFB, LDAFB, IWORK, WORK, LDB,
00392 $ INFO )
00393
00394
00395
00396 AINVNM = ZLANGE( '1', N, N, WORK, LDB,
00397 $ RWORK )
00398 IF( ANORMO.LE.ZERO .OR. AINVNM.LE.ZERO ) THEN
00399 RCONDO = ONE
00400 ELSE
00401 RCONDO = ( ONE / ANORMO ) / AINVNM
00402 END IF
00403
00404
00405
00406
00407 AINVNM = ZLANGE( 'I', N, N, WORK, LDB,
00408 $ RWORK )
00409 IF( ANORMI.LE.ZERO .OR. AINVNM.LE.ZERO ) THEN
00410 RCONDI = ONE
00411 ELSE
00412 RCONDI = ( ONE / ANORMI ) / AINVNM
00413 END IF
00414 END IF
00415
00416 DO 90 ITRAN = 1, NTRAN
00417
00418
00419
00420 TRANS = TRANSS( ITRAN )
00421 IF( ITRAN.EQ.1 ) THEN
00422 RCONDC = RCONDO
00423 ELSE
00424 RCONDC = RCONDI
00425 END IF
00426
00427
00428
00429 CALL ZLACPY( 'Full', KL+KU+1, N, ASAV, LDA,
00430 $ A, LDA )
00431
00432
00433
00434
00435 SRNAMT = 'ZLARHS'
00436 CALL ZLARHS( PATH, XTYPE, 'Full', TRANS, N,
00437 $ N, KL, KU, NRHS, A, LDA, XACT,
00438 $ LDB, B, LDB, ISEED, INFO )
00439 XTYPE = 'C'
00440 CALL ZLACPY( 'Full', N, NRHS, B, LDB, BSAV,
00441 $ LDB )
00442
00443 IF( NOFACT .AND. ITRAN.EQ.1 ) THEN
00444
00445
00446
00447
00448
00449
00450 CALL ZLACPY( 'Full', KL+KU+1, N, A, LDA,
00451 $ AFB( KL+1 ), LDAFB )
00452 CALL ZLACPY( 'Full', N, NRHS, B, LDB, X,
00453 $ LDB )
00454
00455 SRNAMT = 'ZGBSV '
00456 CALL ZGBSV( N, KL, KU, NRHS, AFB, LDAFB,
00457 $ IWORK, X, LDB, INFO )
00458
00459
00460
00461 IF( INFO.NE.IZERO )
00462 $ CALL ALAERH( PATH, 'ZGBSV ', INFO,
00463 $ IZERO, ' ', N, N, KL, KU,
00464 $ NRHS, IMAT, NFAIL, NERRS,
00465 $ NOUT )
00466
00467
00468
00469
00470 CALL ZGBT01( N, N, KL, KU, A, LDA, AFB,
00471 $ LDAFB, IWORK, WORK,
00472 $ RESULT( 1 ) )
00473 NT = 1
00474 IF( IZERO.EQ.0 ) THEN
00475
00476
00477
00478
00479 CALL ZLACPY( 'Full', N, NRHS, B, LDB,
00480 $ WORK, LDB )
00481 CALL ZGBT02( 'No transpose', N, N, KL,
00482 $ KU, NRHS, A, LDA, X, LDB,
00483 $ WORK, LDB, RESULT( 2 ) )
00484
00485
00486
00487
00488 CALL ZGET04( N, NRHS, X, LDB, XACT,
00489 $ LDB, RCONDC, RESULT( 3 ) )
00490 NT = 3
00491 END IF
00492
00493
00494
00495
00496 DO 50 K = 1, NT
00497 IF( RESULT( K ).GE.THRESH ) THEN
00498 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
00499 $ CALL ALADHD( NOUT, PATH )
00500 WRITE( NOUT, FMT = 9997 )'ZGBSV ',
00501 $ N, KL, KU, IMAT, K, RESULT( K )
00502 NFAIL = NFAIL + 1
00503 END IF
00504 50 CONTINUE
00505 NRUN = NRUN + NT
00506 END IF
00507
00508
00509
00510 IF( .NOT.PREFAC )
00511 $ CALL ZLASET( 'Full', 2*KL+KU+1, N,
00512 $ DCMPLX( ZERO ),
00513 $ DCMPLX( ZERO ), AFB, LDAFB )
00514 CALL ZLASET( 'Full', N, NRHS, DCMPLX( ZERO ),
00515 $ DCMPLX( ZERO ), X, LDB )
00516 IF( IEQUED.GT.1 .AND. N.GT.0 ) THEN
00517
00518
00519
00520
00521 CALL ZLAQGB( N, N, KL, KU, A, LDA, S,
00522 $ S( N+1 ), ROWCND, COLCND,
00523 $ AMAX, EQUED )
00524 END IF
00525
00526
00527
00528
00529 SRNAMT = 'ZGBSVX'
00530 CALL ZGBSVX( FACT, TRANS, N, KL, KU, NRHS, A,
00531 $ LDA, AFB, LDAFB, IWORK, EQUED,
00532 $ S, S( LDB+1 ), B, LDB, X, LDB,
00533 $ RCOND, RWORK, RWORK( NRHS+1 ),
00534 $ WORK, RWORK( 2*NRHS+1 ), INFO )
00535
00536
00537
00538 IF( INFO.NE.IZERO )
00539 $ CALL ALAERH( PATH, 'ZGBSVX', INFO, IZERO,
00540 $ FACT // TRANS, N, N, KL, KU,
00541 $ NRHS, IMAT, NFAIL, NERRS,
00542 $ NOUT )
00543
00544
00545
00546 IF( INFO.NE.0 ) THEN
00547 ANRMPV = ZERO
00548 DO 70 J = 1, INFO
00549 DO 60 I = MAX( KU+2-J, 1 ),
00550 $ MIN( N+KU+1-J, KL+KU+1 )
00551 ANRMPV = MAX( ANRMPV,
00552 $ ABS( A( I+( J-1 )*LDA ) ) )
00553 60 CONTINUE
00554 70 CONTINUE
00555 RPVGRW = ZLANTB( 'M', 'U', 'N', INFO,
00556 $ MIN( INFO-1, KL+KU ),
00557 $ AFB( MAX( 1, KL+KU+2-INFO ) ),
00558 $ LDAFB, RDUM )
00559 IF( RPVGRW.EQ.ZERO ) THEN
00560 RPVGRW = ONE
00561 ELSE
00562 RPVGRW = ANRMPV / RPVGRW
00563 END IF
00564 ELSE
00565 RPVGRW = ZLANTB( 'M', 'U', 'N', N, KL+KU,
00566 $ AFB, LDAFB, RDUM )
00567 IF( RPVGRW.EQ.ZERO ) THEN
00568 RPVGRW = ONE
00569 ELSE
00570 RPVGRW = ZLANGB( 'M', N, KL, KU, A,
00571 $ LDA, RDUM ) / RPVGRW
00572 END IF
00573 END IF
00574 RESULT( 7 ) = ABS( RPVGRW-RWORK( 2*NRHS+1 ) )
00575 $ / MAX( RWORK( 2*NRHS+1 ),
00576 $ RPVGRW ) / DLAMCH( 'E' )
00577
00578 IF( .NOT.PREFAC ) THEN
00579
00580
00581
00582
00583 CALL ZGBT01( N, N, KL, KU, A, LDA, AFB,
00584 $ LDAFB, IWORK, WORK,
00585 $ RESULT( 1 ) )
00586 K1 = 1
00587 ELSE
00588 K1 = 2
00589 END IF
00590
00591 IF( INFO.EQ.0 ) THEN
00592 TRFCON = .FALSE.
00593
00594
00595
00596 CALL ZLACPY( 'Full', N, NRHS, BSAV, LDB,
00597 $ WORK, LDB )
00598 CALL ZGBT02( TRANS, N, N, KL, KU, NRHS,
00599 $ ASAV, LDA, X, LDB, WORK, LDB,
00600 $ RESULT( 2 ) )
00601
00602
00603
00604
00605 IF( NOFACT .OR. ( PREFAC .AND.
00606 $ LSAME( EQUED, 'N' ) ) ) THEN
00607 CALL ZGET04( N, NRHS, X, LDB, XACT,
00608 $ LDB, RCONDC, RESULT( 3 ) )
00609 ELSE
00610 IF( ITRAN.EQ.1 ) THEN
00611 ROLDC = ROLDO
00612 ELSE
00613 ROLDC = ROLDI
00614 END IF
00615 CALL ZGET04( N, NRHS, X, LDB, XACT,
00616 $ LDB, ROLDC, RESULT( 3 ) )
00617 END IF
00618
00619
00620
00621
00622 CALL ZGBT05( TRANS, N, KL, KU, NRHS, ASAV,
00623 $ LDA, BSAV, LDB, X, LDB, XACT,
00624 $ LDB, RWORK, RWORK( NRHS+1 ),
00625 $ RESULT( 4 ) )
00626 ELSE
00627 TRFCON = .TRUE.
00628 END IF
00629
00630
00631
00632
00633 RESULT( 6 ) = DGET06( RCOND, RCONDC )
00634
00635
00636
00637
00638 IF( .NOT.TRFCON ) THEN
00639 DO 80 K = K1, NTESTS
00640 IF( RESULT( K ).GE.THRESH ) THEN
00641 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
00642 $ CALL ALADHD( NOUT, PATH )
00643 IF( PREFAC ) THEN
00644 WRITE( NOUT, FMT = 9995 )
00645 $ 'ZGBSVX', FACT, TRANS, N, KL,
00646 $ KU, EQUED, IMAT, K,
00647 $ RESULT( K )
00648 ELSE
00649 WRITE( NOUT, FMT = 9996 )
00650 $ 'ZGBSVX', FACT, TRANS, N, KL,
00651 $ KU, IMAT, K, RESULT( K )
00652 END IF
00653 NFAIL = NFAIL + 1
00654 END IF
00655 80 CONTINUE
00656 NRUN = NRUN + 7 - K1
00657 ELSE
00658 IF( RESULT( 1 ).GE.THRESH .AND. .NOT.
00659 $ PREFAC ) THEN
00660 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
00661 $ CALL ALADHD( NOUT, PATH )
00662 IF( PREFAC ) THEN
00663 WRITE( NOUT, FMT = 9995 )'ZGBSVX',
00664 $ FACT, TRANS, N, KL, KU, EQUED,
00665 $ IMAT, 1, RESULT( 1 )
00666 ELSE
00667 WRITE( NOUT, FMT = 9996 )'ZGBSVX',
00668 $ FACT, TRANS, N, KL, KU, IMAT, 1,
00669 $ RESULT( 1 )
00670 END IF
00671 NFAIL = NFAIL + 1
00672 NRUN = NRUN + 1
00673 END IF
00674 IF( RESULT( 6 ).GE.THRESH ) THEN
00675 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
00676 $ CALL ALADHD( NOUT, PATH )
00677 IF( PREFAC ) THEN
00678 WRITE( NOUT, FMT = 9995 )'ZGBSVX',
00679 $ FACT, TRANS, N, KL, KU, EQUED,
00680 $ IMAT, 6, RESULT( 6 )
00681 ELSE
00682 WRITE( NOUT, FMT = 9996 )'ZGBSVX',
00683 $ FACT, TRANS, N, KL, KU, IMAT, 6,
00684 $ RESULT( 6 )
00685 END IF
00686 NFAIL = NFAIL + 1
00687 NRUN = NRUN + 1
00688 END IF
00689 IF( RESULT( 7 ).GE.THRESH ) THEN
00690 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
00691 $ CALL ALADHD( NOUT, PATH )
00692 IF( PREFAC ) THEN
00693 WRITE( NOUT, FMT = 9995 )'ZGBSVX',
00694 $ FACT, TRANS, N, KL, KU, EQUED,
00695 $ IMAT, 7, RESULT( 7 )
00696 ELSE
00697 WRITE( NOUT, FMT = 9996 )'ZGBSVX',
00698 $ FACT, TRANS, N, KL, KU, IMAT, 7,
00699 $ RESULT( 7 )
00700 END IF
00701 NFAIL = NFAIL + 1
00702 NRUN = NRUN + 1
00703 END IF
00704 END IF
00705 90 CONTINUE
00706 100 CONTINUE
00707 110 CONTINUE
00708 120 CONTINUE
00709 130 CONTINUE
00710 140 CONTINUE
00711 150 CONTINUE
00712
00713
00714
00715 CALL ALASVM( PATH, NOUT, NFAIL, NRUN, NERRS )
00716
00717 9999 FORMAT( ' *** In ZDRVGB, LA=', I5, ' is too small for N=', I5,
00718 $ ', KU=', I5, ', KL=', I5, / ' ==> Increase LA to at least ',
00719 $ I5 )
00720 9998 FORMAT( ' *** In ZDRVGB, LAFB=', I5, ' is too small for N=', I5,
00721 $ ', KU=', I5, ', KL=', I5, /
00722 $ ' ==> Increase LAFB to at least ', I5 )
00723 9997 FORMAT( 1X, A, ', N=', I5, ', KL=', I5, ', KU=', I5, ', type ',
00724 $ I1, ', test(', I1, ')=', G12.5 )
00725 9996 FORMAT( 1X, A, '( ''', A1, ''',''', A1, ''',', I5, ',', I5, ',',
00726 $ I5, ',...), type ', I1, ', test(', I1, ')=', G12.5 )
00727 9995 FORMAT( 1X, A, '( ''', A1, ''',''', A1, ''',', I5, ',', I5, ',',
00728 $ I5, ',...), EQUED=''', A1, ''', type ', I1, ', test(', I1,
00729 $ ')=', G12.5 )
00730
00731 RETURN
00732
00733
00734
00735 END