1*> \brief \b DCHKAA 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8* Definition: 9* =========== 10* 11* PROGRAM DCHKAA 12* 13* 14*> \par Purpose: 15* ============= 16*> 17*> \verbatim 18*> 19*> DCHKAA is the main test program for the DOUBLE PRECISION LAPACK 20*> linear equation routines 21*> 22*> The program must be driven by a short data file. The first 15 records 23*> (not including the first comment line) specify problem dimensions 24*> and program options using list-directed input. The remaining lines 25*> specify the LAPACK test paths and the number of matrix types to use 26*> in testing. An annotated example of a data file can be obtained by 27*> deleting the first 3 characters from the following 40 lines: 28*> Data file for testing DOUBLE PRECISION LAPACK linear eqn. routines 29*> 7 Number of values of M 30*> 0 1 2 3 5 10 16 Values of M (row dimension) 31*> 7 Number of values of N 32*> 0 1 2 3 5 10 16 Values of N (column dimension) 33*> 1 Number of values of NRHS 34*> 2 Values of NRHS (number of right hand sides) 35*> 5 Number of values of NB 36*> 1 3 3 3 20 Values of NB (the blocksize) 37*> 1 0 5 9 1 Values of NX (crossover point) 38*> 3 Number of values of RANK 39*> 30 50 90 Values of rank (as a % of N) 40*> 20.0 Threshold value of test ratio 41*> T Put T to test the LAPACK routines 42*> T Put T to test the driver routines 43*> T Put T to test the error exits 44*> DGE 11 List types on next line if 0 < NTYPES < 11 45*> DGB 8 List types on next line if 0 < NTYPES < 8 46*> DGT 12 List types on next line if 0 < NTYPES < 12 47*> DPO 9 List types on next line if 0 < NTYPES < 9 48*> DPS 9 List types on next line if 0 < NTYPES < 9 49*> DPP 9 List types on next line if 0 < NTYPES < 9 50*> DPB 8 List types on next line if 0 < NTYPES < 8 51*> DPT 12 List types on next line if 0 < NTYPES < 12 52*> DSY 10 List types on next line if 0 < NTYPES < 10 53*> DSR 10 List types on next line if 0 < NTYPES < 10 54*> DSK 10 List types on next line if 0 < NTYPES < 10 55*> DSA 10 List types on next line if 0 < NTYPES < 10 56*> DS2 10 List types on next line if 0 < NTYPES < 10 57*> DSP 10 List types on next line if 0 < NTYPES < 10 58*> DTR 18 List types on next line if 0 < NTYPES < 18 59*> DTP 18 List types on next line if 0 < NTYPES < 18 60*> DTB 17 List types on next line if 0 < NTYPES < 17 61*> DQR 8 List types on next line if 0 < NTYPES < 8 62*> DRQ 8 List types on next line if 0 < NTYPES < 8 63*> DLQ 8 List types on next line if 0 < NTYPES < 8 64*> DQL 8 List types on next line if 0 < NTYPES < 8 65*> DQP 6 List types on next line if 0 < NTYPES < 6 66*> DTZ 3 List types on next line if 0 < NTYPES < 3 67*> DLS 6 List types on next line if 0 < NTYPES < 6 68*> DEQ 69*> DQT 70*> DQX 71*> DTQ 72*> DXQ 73*> DTS 74*> DHH 75*> \endverbatim 76* 77* Parameters: 78* ========== 79* 80*> \verbatim 81*> NMAX INTEGER 82*> The maximum allowable value for M and N. 83*> 84*> MAXIN INTEGER 85*> The number of different values that can be used for each of 86*> M, N, NRHS, NB, NX and RANK 87*> 88*> MAXRHS INTEGER 89*> The maximum number of right hand sides 90*> 91*> MATMAX INTEGER 92*> The maximum number of matrix types to use for testing 93*> 94*> NIN INTEGER 95*> The unit number for input 96*> 97*> NOUT INTEGER 98*> The unit number for output 99*> \endverbatim 100* 101* Authors: 102* ======== 103* 104*> \author Univ. of Tennessee 105*> \author Univ. of California Berkeley 106*> \author Univ. of Colorado Denver 107*> \author NAG Ltd. 108* 109*> \ingroup double_lin 110* 111* ===================================================================== 112 PROGRAM DCHKAA 113* 114* -- LAPACK test routine -- 115* -- LAPACK is a software package provided by Univ. of Tennessee, -- 116* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 117* 118* ===================================================================== 119* 120* .. Parameters .. 121 INTEGER NMAX 122 PARAMETER ( NMAX = 132 ) 123 INTEGER MAXIN 124 PARAMETER ( MAXIN = 12 ) 125 INTEGER MAXRHS 126 PARAMETER ( MAXRHS = 16 ) 127 INTEGER MATMAX 128 PARAMETER ( MATMAX = 30 ) 129 INTEGER NIN, NOUT 130 PARAMETER ( NIN = 5, NOUT = 6 ) 131 INTEGER KDMAX 132 PARAMETER ( KDMAX = NMAX+( NMAX+1 ) / 4 ) 133* .. 134* .. Local Scalars .. 135 LOGICAL FATAL, TSTCHK, TSTDRV, TSTERR 136 CHARACTER C1 137 CHARACTER*2 C2 138 CHARACTER*3 PATH 139 CHARACTER*10 INTSTR 140 CHARACTER*72 ALINE 141 INTEGER I, IC, J, K, LA, LAFAC, LDA, NB, NM, NMATS, NN, 142 $ NNB, NNB2, NNS, NRHS, NTYPES, NRANK, 143 $ VERS_MAJOR, VERS_MINOR, VERS_PATCH 144 DOUBLE PRECISION EPS, S1, S2, THREQ, THRESH 145* .. 146* .. Local Arrays .. 147 LOGICAL DOTYPE( MATMAX ) 148 INTEGER IWORK( 25*NMAX ), MVAL( MAXIN ), 149 $ NBVAL( MAXIN ), NBVAL2( MAXIN ), 150 $ NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ), 151 $ RANKVAL( MAXIN ), PIV( NMAX ) 152 DOUBLE PRECISION E( NMAX ), S( 2*NMAX ) 153* .. 154* .. Allocatable Arrays .. 155 INTEGER AllocateStatus 156 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: RWORK 157 DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: A, B, WORK 158* .. 159* .. External Functions .. 160 LOGICAL LSAME, LSAMEN 161 DOUBLE PRECISION DLAMCH, DSECND 162 EXTERNAL LSAME, LSAMEN, DLAMCH, DSECND 163* .. 164* .. External Subroutines .. 165 EXTERNAL ALAREQ, DCHKEQ, DCHKGB, DCHKGE, DCHKGT, DCHKLQ, 166 $ DCHKORHR_COL, DCHKPB, DCHKPO, DCHKPS, DCHKPP, 167 $ DCHKPT, DCHKQ3, DCHKQL, DCHKQR, DCHKRQ, DCHKSP, 168 $ DCHKSY, DCHKSY_ROOK, DCHKSY_RK, DCHKSY_AA, 169 $ DCHKTB, DCHKTP, DCHKTR, DCHKTZ, DDRVGB, DDRVGE, 170 $ DDRVGT, DDRVLS, DDRVPB, DDRVPO, DDRVPP, DDRVPT, 171 $ DDRVSP, DDRVSY, DDRVSY_ROOK, DDRVSY_RK, 172 $ DDRVSY_AA, ILAVER, DCHKLQTP, DCHKQRT, DCHKQRTP, 173 $ DCHKLQT,DCHKTSQR 174* .. 175* .. Scalars in Common .. 176 LOGICAL LERR, OK 177 CHARACTER*32 SRNAMT 178 INTEGER INFOT, NUNIT 179* .. 180* .. Arrays in Common .. 181 INTEGER IPARMS( 100 ) 182* .. 183* .. Common blocks .. 184 COMMON / INFOC / INFOT, NUNIT, OK, LERR 185 COMMON / SRNAMC / SRNAMT 186 COMMON / CLAENV / IPARMS 187* .. 188* .. Data statements .. 189 DATA THREQ / 2.0D0 / , INTSTR / '0123456789' / 190* .. 191* .. 192* .. Allocate memory dynamically .. 193* 194 ALLOCATE ( A( ( KDMAX+1 )*NMAX, 7 ), STAT = AllocateStatus ) 195 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 196 ALLOCATE ( B( NMAX*MAXRHS, 4 ), STAT = AllocateStatus ) 197 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 198 ALLOCATE ( WORK( NMAX, 3*NMAX+MAXRHS+30 ), STAT = AllocateStatus ) 199 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 200 ALLOCATE ( RWORK( 5*NMAX+2*MAXRHS ), STAT = AllocateStatus ) 201 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 202* 203* .. Executable Statements .. 204* 205 S1 = DSECND( ) 206 LDA = NMAX 207 FATAL = .FALSE. 208* 209* Read a dummy line. 210* 211 READ( NIN, FMT = * ) 212* 213* Report values of parameters. 214* 215 CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH ) 216 WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH 217* 218* Read the values of M 219* 220 READ( NIN, FMT = * )NM 221 IF( NM.LT.1 ) THEN 222 WRITE( NOUT, FMT = 9996 )' NM ', NM, 1 223 NM = 0 224 FATAL = .TRUE. 225 ELSE IF( NM.GT.MAXIN ) THEN 226 WRITE( NOUT, FMT = 9995 )' NM ', NM, MAXIN 227 NM = 0 228 FATAL = .TRUE. 229 END IF 230 READ( NIN, FMT = * )( MVAL( I ), I = 1, NM ) 231 DO 10 I = 1, NM 232 IF( MVAL( I ).LT.0 ) THEN 233 WRITE( NOUT, FMT = 9996 )' M ', MVAL( I ), 0 234 FATAL = .TRUE. 235 ELSE IF( MVAL( I ).GT.NMAX ) THEN 236 WRITE( NOUT, FMT = 9995 )' M ', MVAL( I ), NMAX 237 FATAL = .TRUE. 238 END IF 239 10 CONTINUE 240 IF( NM.GT.0 ) 241 $ WRITE( NOUT, FMT = 9993 )'M ', ( MVAL( I ), I = 1, NM ) 242* 243* Read the values of N 244* 245 READ( NIN, FMT = * )NN 246 IF( NN.LT.1 ) THEN 247 WRITE( NOUT, FMT = 9996 )' NN ', NN, 1 248 NN = 0 249 FATAL = .TRUE. 250 ELSE IF( NN.GT.MAXIN ) THEN 251 WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN 252 NN = 0 253 FATAL = .TRUE. 254 END IF 255 READ( NIN, FMT = * )( NVAL( I ), I = 1, NN ) 256 DO 20 I = 1, NN 257 IF( NVAL( I ).LT.0 ) THEN 258 WRITE( NOUT, FMT = 9996 )' N ', NVAL( I ), 0 259 FATAL = .TRUE. 260 ELSE IF( NVAL( I ).GT.NMAX ) THEN 261 WRITE( NOUT, FMT = 9995 )' N ', NVAL( I ), NMAX 262 FATAL = .TRUE. 263 END IF 264 20 CONTINUE 265 IF( NN.GT.0 ) 266 $ WRITE( NOUT, FMT = 9993 )'N ', ( NVAL( I ), I = 1, NN ) 267* 268* Read the values of NRHS 269* 270 READ( NIN, FMT = * )NNS 271 IF( NNS.LT.1 ) THEN 272 WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1 273 NNS = 0 274 FATAL = .TRUE. 275 ELSE IF( NNS.GT.MAXIN ) THEN 276 WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN 277 NNS = 0 278 FATAL = .TRUE. 279 END IF 280 READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS ) 281 DO 30 I = 1, NNS 282 IF( NSVAL( I ).LT.0 ) THEN 283 WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0 284 FATAL = .TRUE. 285 ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN 286 WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS 287 FATAL = .TRUE. 288 END IF 289 30 CONTINUE 290 IF( NNS.GT.0 ) 291 $ WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS ) 292* 293* Read the values of NB 294* 295 READ( NIN, FMT = * )NNB 296 IF( NNB.LT.1 ) THEN 297 WRITE( NOUT, FMT = 9996 )'NNB ', NNB, 1 298 NNB = 0 299 FATAL = .TRUE. 300 ELSE IF( NNB.GT.MAXIN ) THEN 301 WRITE( NOUT, FMT = 9995 )'NNB ', NNB, MAXIN 302 NNB = 0 303 FATAL = .TRUE. 304 END IF 305 READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB ) 306 DO 40 I = 1, NNB 307 IF( NBVAL( I ).LT.0 ) THEN 308 WRITE( NOUT, FMT = 9996 )' NB ', NBVAL( I ), 0 309 FATAL = .TRUE. 310 END IF 311 40 CONTINUE 312 IF( NNB.GT.0 ) 313 $ WRITE( NOUT, FMT = 9993 )'NB ', ( NBVAL( I ), I = 1, NNB ) 314* 315* Set NBVAL2 to be the set of unique values of NB 316* 317 NNB2 = 0 318 DO 60 I = 1, NNB 319 NB = NBVAL( I ) 320 DO 50 J = 1, NNB2 321 IF( NB.EQ.NBVAL2( J ) ) 322 $ GO TO 60 323 50 CONTINUE 324 NNB2 = NNB2 + 1 325 NBVAL2( NNB2 ) = NB 326 60 CONTINUE 327* 328* Read the values of NX 329* 330 READ( NIN, FMT = * )( NXVAL( I ), I = 1, NNB ) 331 DO 70 I = 1, NNB 332 IF( NXVAL( I ).LT.0 ) THEN 333 WRITE( NOUT, FMT = 9996 )' NX ', NXVAL( I ), 0 334 FATAL = .TRUE. 335 END IF 336 70 CONTINUE 337 IF( NNB.GT.0 ) 338 $ WRITE( NOUT, FMT = 9993 )'NX ', ( NXVAL( I ), I = 1, NNB ) 339* 340* Read the values of RANKVAL 341* 342 READ( NIN, FMT = * )NRANK 343 IF( NN.LT.1 ) THEN 344 WRITE( NOUT, FMT = 9996 )' NRANK ', NRANK, 1 345 NRANK = 0 346 FATAL = .TRUE. 347 ELSE IF( NN.GT.MAXIN ) THEN 348 WRITE( NOUT, FMT = 9995 )' NRANK ', NRANK, MAXIN 349 NRANK = 0 350 FATAL = .TRUE. 351 END IF 352 READ( NIN, FMT = * )( RANKVAL( I ), I = 1, NRANK ) 353 DO I = 1, NRANK 354 IF( RANKVAL( I ).LT.0 ) THEN 355 WRITE( NOUT, FMT = 9996 )' RANK ', RANKVAL( I ), 0 356 FATAL = .TRUE. 357 ELSE IF( RANKVAL( I ).GT.100 ) THEN 358 WRITE( NOUT, FMT = 9995 )' RANK ', RANKVAL( I ), 100 359 FATAL = .TRUE. 360 END IF 361 END DO 362 IF( NRANK.GT.0 ) 363 $ WRITE( NOUT, FMT = 9993 )'RANK % OF N', 364 $ ( RANKVAL( I ), I = 1, NRANK ) 365* 366* Read the threshold value for the test ratios. 367* 368 READ( NIN, FMT = * )THRESH 369 WRITE( NOUT, FMT = 9992 )THRESH 370* 371* Read the flag that indicates whether to test the LAPACK routines. 372* 373 READ( NIN, FMT = * )TSTCHK 374* 375* Read the flag that indicates whether to test the driver routines. 376* 377 READ( NIN, FMT = * )TSTDRV 378* 379* Read the flag that indicates whether to test the error exits. 380* 381 READ( NIN, FMT = * )TSTERR 382* 383 IF( FATAL ) THEN 384 WRITE( NOUT, FMT = 9999 ) 385 STOP 386 END IF 387* 388* Calculate and print the machine dependent constants. 389* 390 EPS = DLAMCH( 'Underflow threshold' ) 391 WRITE( NOUT, FMT = 9991 )'underflow', EPS 392 EPS = DLAMCH( 'Overflow threshold' ) 393 WRITE( NOUT, FMT = 9991 )'overflow ', EPS 394 EPS = DLAMCH( 'Epsilon' ) 395 WRITE( NOUT, FMT = 9991 )'precision', EPS 396 WRITE( NOUT, FMT = * ) 397* 398 80 CONTINUE 399* 400* Read a test path and the number of matrix types to use. 401* 402 READ( NIN, FMT = '(A72)', END = 140 )ALINE 403 PATH = ALINE( 1: 3 ) 404 NMATS = MATMAX 405 I = 3 406 90 CONTINUE 407 I = I + 1 408 IF( I.GT.72 ) THEN 409 NMATS = MATMAX 410 GO TO 130 411 END IF 412 IF( ALINE( I: I ).EQ.' ' ) 413 $ GO TO 90 414 NMATS = 0 415 100 CONTINUE 416 C1 = ALINE( I: I ) 417 DO 110 K = 1, 10 418 IF( C1.EQ.INTSTR( K: K ) ) THEN 419 IC = K - 1 420 GO TO 120 421 END IF 422 110 CONTINUE 423 GO TO 130 424 120 CONTINUE 425 NMATS = NMATS*10 + IC 426 I = I + 1 427 IF( I.GT.72 ) 428 $ GO TO 130 429 GO TO 100 430 130 CONTINUE 431 C1 = PATH( 1: 1 ) 432 C2 = PATH( 2: 3 ) 433 NRHS = NSVAL( 1 ) 434* 435* Check first character for correct precision. 436* 437 IF( .NOT.LSAME( C1, 'Double precision' ) ) THEN 438 WRITE( NOUT, FMT = 9990 )PATH 439* 440 ELSE IF( NMATS.LE.0 ) THEN 441* 442* Check for a positive number of tests requested. 443* 444 WRITE( NOUT, FMT = 9989 )PATH 445* 446 ELSE IF( LSAMEN( 2, C2, 'GE' ) ) THEN 447* 448* GE: general matrices 449* 450 NTYPES = 11 451 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 452* 453 IF( TSTCHK ) THEN 454 CALL DCHKGE( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS, 455 $ NSVAL, THRESH, TSTERR, LDA, A( 1, 1 ), 456 $ A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), 457 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 458 ELSE 459 WRITE( NOUT, FMT = 9989 )PATH 460 END IF 461* 462 IF( TSTDRV ) THEN 463 CALL DDRVGE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 464 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 465 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK, 466 $ RWORK, IWORK, NOUT ) 467 ELSE 468 WRITE( NOUT, FMT = 9988 )PATH 469 END IF 470* 471 ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN 472* 473* GB: general banded matrices 474* 475 LA = ( 2*KDMAX+1 )*NMAX 476 LAFAC = ( 3*KDMAX+1 )*NMAX 477 NTYPES = 8 478 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 479* 480 IF( TSTCHK ) THEN 481 CALL DCHKGB( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS, 482 $ NSVAL, THRESH, TSTERR, A( 1, 1 ), LA, 483 $ A( 1, 3 ), LAFAC, B( 1, 1 ), B( 1, 2 ), 484 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 485 ELSE 486 WRITE( NOUT, FMT = 9989 )PATH 487 END IF 488* 489 IF( TSTDRV ) THEN 490 CALL DDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 491 $ A( 1, 1 ), LA, A( 1, 3 ), LAFAC, A( 1, 6 ), 492 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, 493 $ WORK, RWORK, IWORK, NOUT ) 494 ELSE 495 WRITE( NOUT, FMT = 9988 )PATH 496 END IF 497* 498 ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN 499* 500* GT: general tridiagonal matrices 501* 502 NTYPES = 12 503 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 504* 505 IF( TSTCHK ) THEN 506 CALL DCHKGT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 507 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), 508 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 509 ELSE 510 WRITE( NOUT, FMT = 9989 )PATH 511 END IF 512* 513 IF( TSTDRV ) THEN 514 CALL DDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 515 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), 516 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 517 ELSE 518 WRITE( NOUT, FMT = 9988 )PATH 519 END IF 520* 521 ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN 522* 523* PO: positive definite matrices 524* 525 NTYPES = 9 526 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 527* 528 IF( TSTCHK ) THEN 529 CALL DCHKPO( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 530 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 531 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 532 $ WORK, RWORK, IWORK, NOUT ) 533 ELSE 534 WRITE( NOUT, FMT = 9989 )PATH 535 END IF 536* 537 IF( TSTDRV ) THEN 538 CALL DDRVPO( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 539 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 540 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK, 541 $ RWORK, IWORK, NOUT ) 542 ELSE 543 WRITE( NOUT, FMT = 9988 )PATH 544 END IF 545* 546 ELSE IF( LSAMEN( 2, C2, 'PS' ) ) THEN 547* 548* PS: positive semi-definite matrices 549* 550 NTYPES = 9 551* 552 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 553* 554 IF( TSTCHK ) THEN 555 CALL DCHKPS( DOTYPE, NN, NVAL, NNB2, NBVAL2, NRANK, 556 $ RANKVAL, THRESH, TSTERR, LDA, A( 1, 1 ), 557 $ A( 1, 2 ), A( 1, 3 ), PIV, WORK, RWORK, 558 $ NOUT ) 559 ELSE 560 WRITE( NOUT, FMT = 9989 )PATH 561 END IF 562* 563 ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN 564* 565* PP: positive definite packed matrices 566* 567 NTYPES = 9 568 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 569* 570 IF( TSTCHK ) THEN 571 CALL DCHKPP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 572 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 573 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK, 574 $ IWORK, NOUT ) 575 ELSE 576 WRITE( NOUT, FMT = 9989 )PATH 577 END IF 578* 579 IF( TSTDRV ) THEN 580 CALL DDRVPP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 581 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 582 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK, 583 $ RWORK, IWORK, NOUT ) 584 ELSE 585 WRITE( NOUT, FMT = 9988 )PATH 586 END IF 587* 588 ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN 589* 590* PB: positive definite banded matrices 591* 592 NTYPES = 8 593 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 594* 595 IF( TSTCHK ) THEN 596 CALL DCHKPB( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 597 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 598 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 599 $ WORK, RWORK, IWORK, NOUT ) 600 ELSE 601 WRITE( NOUT, FMT = 9989 )PATH 602 END IF 603* 604 IF( TSTDRV ) THEN 605 CALL DDRVPB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 606 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 607 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK, 608 $ RWORK, IWORK, NOUT ) 609 ELSE 610 WRITE( NOUT, FMT = 9988 )PATH 611 END IF 612* 613 ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN 614* 615* PT: positive definite tridiagonal matrices 616* 617 NTYPES = 12 618 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 619* 620 IF( TSTCHK ) THEN 621 CALL DCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 622 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 623 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT ) 624 ELSE 625 WRITE( NOUT, FMT = 9989 )PATH 626 END IF 627* 628 IF( TSTDRV ) THEN 629 CALL DDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 630 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 631 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT ) 632 ELSE 633 WRITE( NOUT, FMT = 9988 )PATH 634 END IF 635* 636 ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN 637* 638* SY: symmetric indefinite matrices, 639* with partial (Bunch-Kaufman) pivoting algorithm 640* 641 NTYPES = 10 642 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 643* 644 IF( TSTCHK ) THEN 645 CALL DCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 646 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 647 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 648 $ WORK, RWORK, IWORK, NOUT ) 649 ELSE 650 WRITE( NOUT, FMT = 9989 )PATH 651 END IF 652* 653 IF( TSTDRV ) THEN 654 CALL DDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 655 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 656 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 657 $ NOUT ) 658 ELSE 659 WRITE( NOUT, FMT = 9988 )PATH 660 END IF 661* 662 ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN 663* 664* SR: symmetric indefinite matrices, 665* with bounded Bunch-Kaufman (rook) pivoting algorithm 666* 667 NTYPES = 10 668 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 669* 670 IF( TSTCHK ) THEN 671 CALL DCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 672 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 673 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 674 $ WORK, RWORK, IWORK, NOUT ) 675 ELSE 676 WRITE( NOUT, FMT = 9989 )PATH 677 END IF 678* 679 IF( TSTDRV ) THEN 680 CALL DDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 681 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 682 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 683 $ WORK, RWORK, IWORK, NOUT ) 684 ELSE 685 WRITE( NOUT, FMT = 9988 )PATH 686 END IF 687* 688 ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN 689* 690* SK: symmetric indefinite matrices, 691* with bounded Bunch-Kaufman (rook) pivoting algorithm, 692* different matrix storage format than SR path version. 693* 694 NTYPES = 10 695 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 696* 697 IF( TSTCHK ) THEN 698 CALL DCHKSY_RK( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 699 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 700 $ E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), 701 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 702 ELSE 703 WRITE( NOUT, FMT = 9989 )PATH 704 END IF 705* 706 IF( TSTDRV ) THEN 707 CALL DDRVSY_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 708 $ LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ), 709 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 710 $ WORK, RWORK, IWORK, NOUT ) 711 ELSE 712 WRITE( NOUT, FMT = 9988 )PATH 713 END IF 714* 715 ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN 716* 717* SA: symmetric indefinite matrices, 718* with partial (Aasen's) pivoting algorithm 719* 720 NTYPES = 10 721 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 722* 723 IF( TSTCHK ) THEN 724 CALL DCHKSY_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, 725 $ NSVAL, THRESH, TSTERR, LDA, 726 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 727 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 728 $ WORK, RWORK, IWORK, NOUT ) 729 ELSE 730 WRITE( NOUT, FMT = 9989 )PATH 731 END IF 732* 733 IF( TSTDRV ) THEN 734 CALL DDRVSY_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 735 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 736 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 737 $ WORK, RWORK, IWORK, NOUT ) 738 ELSE 739 WRITE( NOUT, FMT = 9988 )PATH 740 END IF 741* 742* 743 ELSE IF( LSAMEN( 2, C2, 'S2' ) ) THEN 744* 745* SA: symmetric indefinite matrices, 746* with partial (Aasen's) pivoting algorithm 747* 748 NTYPES = 10 749 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 750* 751 IF( TSTCHK ) THEN 752 CALL DCHKSY_AA_2STAGE( DOTYPE, NN, NVAL, NNB2, NBVAL2, 753 $ NNS, NSVAL, THRESH, TSTERR, LDA, 754 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 755 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 756 $ WORK, RWORK, IWORK, NOUT ) 757 ELSE 758 WRITE( NOUT, FMT = 9989 )PATH 759 END IF 760* 761 IF( TSTDRV ) THEN 762 CALL DDRVSY_AA_2STAGE( 763 $ DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 764 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 765 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 766 $ WORK, RWORK, IWORK, NOUT ) 767 ELSE 768 WRITE( NOUT, FMT = 9988 )PATH 769 END IF 770* 771* 772 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN 773* 774* SP: symmetric indefinite packed matrices, 775* with partial (Bunch-Kaufman) pivoting algorithm 776* 777 NTYPES = 10 778 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 779* 780 IF( TSTCHK ) THEN 781 CALL DCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 782 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 783 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK, 784 $ IWORK, NOUT ) 785 ELSE 786 WRITE( NOUT, FMT = 9989 )PATH 787 END IF 788* 789 IF( TSTDRV ) THEN 790 CALL DDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 791 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 792 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 793 $ NOUT ) 794 ELSE 795 WRITE( NOUT, FMT = 9988 )PATH 796 END IF 797* 798 ELSE IF( LSAMEN( 2, C2, 'TR' ) ) THEN 799* 800* TR: triangular matrices 801* 802 NTYPES = 18 803 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 804* 805 IF( TSTCHK ) THEN 806 CALL DCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 807 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 808 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK, 809 $ IWORK, NOUT ) 810 ELSE 811 WRITE( NOUT, FMT = 9989 )PATH 812 END IF 813* 814 ELSE IF( LSAMEN( 2, C2, 'TP' ) ) THEN 815* 816* TP: triangular packed matrices 817* 818 NTYPES = 18 819 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 820* 821 IF( TSTCHK ) THEN 822 CALL DCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 823 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), 824 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 825 $ NOUT ) 826 ELSE 827 WRITE( NOUT, FMT = 9989 )PATH 828 END IF 829* 830 ELSE IF( LSAMEN( 2, C2, 'TB' ) ) THEN 831* 832* TB: triangular banded matrices 833* 834 NTYPES = 17 835 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 836* 837 IF( TSTCHK ) THEN 838 CALL DCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 839 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), 840 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 841 $ NOUT ) 842 ELSE 843 WRITE( NOUT, FMT = 9989 )PATH 844 END IF 845* 846 ELSE IF( LSAMEN( 2, C2, 'QR' ) ) THEN 847* 848* QR: QR factorization 849* 850 NTYPES = 8 851 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 852* 853 IF( TSTCHK ) THEN 854 CALL DCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 855 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 856 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 857 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 858 $ WORK, RWORK, IWORK, NOUT ) 859 ELSE 860 WRITE( NOUT, FMT = 9989 )PATH 861 END IF 862* 863 ELSE IF( LSAMEN( 2, C2, 'LQ' ) ) THEN 864* 865* LQ: LQ factorization 866* 867 NTYPES = 8 868 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 869* 870 IF( TSTCHK ) THEN 871 CALL DCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 872 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 873 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 874 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 875 $ WORK, RWORK, NOUT ) 876 ELSE 877 WRITE( NOUT, FMT = 9989 )PATH 878 END IF 879* 880 ELSE IF( LSAMEN( 2, C2, 'QL' ) ) THEN 881* 882* QL: QL factorization 883* 884 NTYPES = 8 885 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 886* 887 IF( TSTCHK ) THEN 888 CALL DCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 889 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 890 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 891 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 892 $ WORK, RWORK, NOUT ) 893 ELSE 894 WRITE( NOUT, FMT = 9989 )PATH 895 END IF 896* 897 ELSE IF( LSAMEN( 2, C2, 'RQ' ) ) THEN 898* 899* RQ: RQ factorization 900* 901 NTYPES = 8 902 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 903* 904 IF( TSTCHK ) THEN 905 CALL DCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 906 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 907 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 908 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 909 $ WORK, RWORK, IWORK, NOUT ) 910 ELSE 911 WRITE( NOUT, FMT = 9989 )PATH 912 END IF 913* 914 ELSE IF( LSAMEN( 2, C2, 'QP' ) ) THEN 915* 916* QP: QR factorization with pivoting 917* 918 NTYPES = 6 919 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 920* 921 IF( TSTCHK ) THEN 922 CALL DCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 923 $ THRESH, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), 924 $ B( 1, 3 ), WORK, IWORK, NOUT ) 925 ELSE 926 WRITE( NOUT, FMT = 9989 )PATH 927 END IF 928* 929 ELSE IF( LSAMEN( 2, C2, 'TZ' ) ) THEN 930* 931* TZ: Trapezoidal matrix 932* 933 NTYPES = 3 934 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 935* 936 IF( TSTCHK ) THEN 937 CALL DCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, 938 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), 939 $ B( 1, 3 ), WORK, NOUT ) 940 ELSE 941 WRITE( NOUT, FMT = 9989 )PATH 942 END IF 943* 944 ELSE IF( LSAMEN( 2, C2, 'LS' ) ) THEN 945* 946* LS: Least squares drivers 947* 948 NTYPES = 6 949 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 950* 951 IF( TSTDRV ) THEN 952 CALL DDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB, 953 $ NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ), 954 $ A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 955 $ RWORK, RWORK( NMAX+1 ), NOUT ) 956 ELSE 957 WRITE( NOUT, FMT = 9988 )PATH 958 END IF 959* 960 ELSE IF( LSAMEN( 2, C2, 'EQ' ) ) THEN 961* 962* EQ: Equilibration routines for general and positive definite 963* matrices (THREQ should be between 2 and 10) 964* 965 IF( TSTCHK ) THEN 966 CALL DCHKEQ( THREQ, NOUT ) 967 ELSE 968 WRITE( NOUT, FMT = 9989 )PATH 969 END IF 970* 971 ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN 972* 973* QT: QRT routines for general matrices 974* 975 IF( TSTCHK ) THEN 976 CALL DCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 977 $ NBVAL, NOUT ) 978 ELSE 979 WRITE( NOUT, FMT = 9989 )PATH 980 END IF 981* 982 ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN 983* 984* QX: QRT routines for triangular-pentagonal matrices 985* 986 IF( TSTCHK ) THEN 987 CALL DCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 988 $ NBVAL, NOUT ) 989 ELSE 990 WRITE( NOUT, FMT = 9989 )PATH 991 END IF 992* 993 ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN 994* 995* TQ: LQT routines for general matrices 996* 997 IF( TSTCHK ) THEN 998 CALL DCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 999 $ NBVAL, NOUT ) 1000 ELSE 1001 WRITE( NOUT, FMT = 9989 )PATH 1002 END IF 1003* 1004 ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN 1005* 1006* XQ: LQT routines for triangular-pentagonal matrices 1007* 1008 IF( TSTCHK ) THEN 1009 CALL DCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1010 $ NBVAL, NOUT ) 1011 ELSE 1012 WRITE( NOUT, FMT = 9989 )PATH 1013 END IF 1014* 1015 ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN 1016* 1017* TS: QR routines for tall-skinny matrices 1018* 1019 IF( TSTCHK ) THEN 1020 CALL DCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1021 $ NBVAL, NOUT ) 1022 ELSE 1023 WRITE( NOUT, FMT = 9989 )PATH 1024 END IF 1025* 1026 ELSE IF( LSAMEN( 2, C2, 'HH' ) ) THEN 1027* 1028* HH: Householder reconstruction for tall-skinny matrices 1029* 1030 IF( TSTCHK ) THEN 1031 CALL DCHKORHR_COL( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1032 $ NBVAL, NOUT ) 1033 ELSE 1034 WRITE( NOUT, FMT = 9989 ) PATH 1035 END IF 1036* 1037 ELSE 1038 1039* 1040 WRITE( NOUT, FMT = 9990 )PATH 1041 END IF 1042* 1043* Go back to get another input line. 1044* 1045 GO TO 80 1046* 1047* Branch to this line when the last record is read. 1048* 1049 140 CONTINUE 1050 CLOSE ( NIN ) 1051 S2 = DSECND( ) 1052 WRITE( NOUT, FMT = 9998 ) 1053 WRITE( NOUT, FMT = 9997 )S2 - S1 1054* 1055 DEALLOCATE (A, STAT = AllocateStatus) 1056 DEALLOCATE (B, STAT = AllocateStatus) 1057 DEALLOCATE (WORK, STAT = AllocateStatus) 1058 DEALLOCATE (RWORK, STAT = AllocateStatus) 1059* 1060 9999 FORMAT( / ' Execution not attempted due to input errors' ) 1061 9998 FORMAT( / ' End of tests' ) 1062 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / ) 1063 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=', 1064 $ I6 ) 1065 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=', 1066 $ I6 ) 1067 9994 FORMAT( ' Tests of the DOUBLE PRECISION LAPACK routines ', 1068 $ / ' LAPACK VERSION ', I1, '.', I1, '.', I1, 1069 $ / / ' The following parameter values will be used:' ) 1070 9993 FORMAT( 4X, A4, ': ', 10I6, / 11X, 10I6 ) 1071 9992 FORMAT( / ' Routines pass computational tests if test ratio is ', 1072 $ 'less than', F8.2, / ) 1073 9991 FORMAT( ' Relative machine ', A, ' is taken to be', D16.6 ) 1074 9990 FORMAT( / 1X, A3, ': Unrecognized path name' ) 1075 9989 FORMAT( / 1X, A3, ' routines were not tested' ) 1076 9988 FORMAT( / 1X, A3, ' driver routines were not tested' ) 1077* 1078* End of DCHKAA 1079* 1080 END 1081