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