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