1*> \brief \b ZCHKAA 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 ZCHKAA 12* 13* 14*> \par Purpose: 15* ============= 16*> 17*> \verbatim 18*> 19*> ZCHKAA is the main test program for the COMPLEX*16 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*16 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*> ZGE 11 List types on next line if 0 < NTYPES < 11 45*> ZGB 8 List types on next line if 0 < NTYPES < 8 46*> ZGT 12 List types on next line if 0 < NTYPES < 12 47*> ZPO 9 List types on next line if 0 < NTYPES < 9 48*> ZPS 9 List types on next line if 0 < NTYPES < 9 49*> ZPP 9 List types on next line if 0 < NTYPES < 9 50*> ZPB 8 List types on next line if 0 < NTYPES < 8 51*> ZPT 12 List types on next line if 0 < NTYPES < 12 52*> ZHE 10 List types on next line if 0 < NTYPES < 10 53*> ZHR 10 List types on next line if 0 < NTYPES < 10 54*> ZHK 10 List types on next line if 0 < NTYPES < 10 55*> ZHA 10 List types on next line if 0 < NTYPES < 10 56*> ZH2 10 List types on next line if 0 < NTYPES < 10 57*> ZSA 11 List types on next line if 0 < NTYPES < 10 58*> ZS2 11 List types on next line if 0 < NTYPES < 10 59*> ZHP 10 List types on next line if 0 < NTYPES < 10 60*> ZSY 11 List types on next line if 0 < NTYPES < 11 61*> ZSR 11 List types on next line if 0 < NTYPES < 11 62*> ZSK 11 List types on next line if 0 < NTYPES < 11 63*> ZSP 11 List types on next line if 0 < NTYPES < 11 64*> ZTR 18 List types on next line if 0 < NTYPES < 18 65*> ZTP 18 List types on next line if 0 < NTYPES < 18 66*> ZTB 17 List types on next line if 0 < NTYPES < 17 67*> ZQR 8 List types on next line if 0 < NTYPES < 8 68*> ZRQ 8 List types on next line if 0 < NTYPES < 8 69*> ZLQ 8 List types on next line if 0 < NTYPES < 8 70*> ZQL 8 List types on next line if 0 < NTYPES < 8 71*> ZQP 6 List types on next line if 0 < NTYPES < 6 72*> ZTZ 3 List types on next line if 0 < NTYPES < 3 73*> ZLS 6 List types on next line if 0 < NTYPES < 6 74*> ZEQ 75*> ZQT 76*> ZQX 77*> ZTS 78*> ZHH 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 complex16_lin 114* 115* ===================================================================== 116 PROGRAM ZCHKAA 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 DOUBLE PRECISION 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 DOUBLE PRECISION S( 2*NMAX ) 157 COMPLEX*16 E( NMAX ) 158* 159* .. Allocatable Arrays .. 160 INTEGER AllocateStatus 161 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: RWORK 162 COMPLEX*16, DIMENSION(:,:), ALLOCATABLE:: A, B, WORK 163* .. 164* .. External Functions .. 165 LOGICAL LSAME, LSAMEN 166 DOUBLE PRECISION DLAMCH, DSECND 167 EXTERNAL LSAME, LSAMEN, DLAMCH, DSECND 168* .. 169* .. External Subroutines .. 170 EXTERNAL ALAREQ, ZCHKEQ, ZCHKGB, ZCHKGE, ZCHKGT, ZCHKHE, 171 $ ZCHKHE_ROOK, ZCHKHE_RK, ZCHKHE_AA, ZCHKHP, 172 $ ZCHKLQ, ZCHKUNHR_COL, ZCHKPB, ZCHKPO, ZCHKPS, 173 $ ZCHKPP, ZCHKPT, ZCHKQ3, ZCHKQL, ZCHKQR, ZCHKRQ, 174 $ ZCHKSP, ZCHKSY, ZCHKSY_ROOK, ZCHKSY_RK, 175 $ ZCHKSY_AA, ZCHKTB, ZCHKTP, ZCHKTR, ZCHKTZ, 176 $ ZDRVGB, ZDRVGE, ZDRVGT, ZDRVHE, ZDRVHE_ROOK, 177 $ ZDRVHE_RK, ZDRVHE_AA, ZDRVHE_AA_2STAGE, ZDRVHP, 178 $ ZDRVLS, ZDRVPB, ZDRVPO, ZDRVPP, ZDRVPT, 179 $ ZDRVSP, ZDRVSY, ZDRVSY_ROOK, ZDRVSY_RK, 180 $ ZDRVSY_AA, ZDRVSY_AA_2STAGE, ILAVER, ZCHKQRT, 181 $ ZCHKQRTP, ZCHKLQT, ZCHKLQTP, ZCHKTSQR 182* .. 183* .. Scalars in Common .. 184 LOGICAL LERR, OK 185 CHARACTER*32 SRNAMT 186 INTEGER INFOT, NUNIT 187* .. 188* .. Arrays in Common .. 189 INTEGER IPARMS( 100 ) 190* .. 191* .. Common blocks .. 192 COMMON / INFOC / INFOT, NUNIT, OK, LERR 193 COMMON / SRNAMC / SRNAMT 194 COMMON / CLAENV / IPARMS 195* .. 196* .. Data statements .. 197 DATA THREQ / 2.0D0 / , INTSTR / '0123456789' / 198* 199* .. Allocate memory dynamically .. 200 ALLOCATE (RWORK( 150*NMAX+2*MAXRHS ), STAT = AllocateStatus) 201 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 202 ALLOCATE (A ((KDMAX+1) * NMAX, 7), STAT = AllocateStatus) 203 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 204 ALLOCATE (B (NMAX * MAXRHS, 4), STAT = AllocateStatus) 205 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 206 ALLOCATE (WORK (NMAX, NMAX+MAXRHS+10), STAT = AllocateStatus) 207 IF (AllocateStatus /= 0) STOP "*** Not enough memory ***" 208* .. 209* .. Executable Statements .. 210* 211 S1 = DSECND( ) 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 = DLAMCH( 'Underflow threshold' ) 397 WRITE( NOUT, FMT = 9991 )'underflow', EPS 398 EPS = DLAMCH( 'Overflow threshold' ) 399 WRITE( NOUT, FMT = 9991 )'overflow ', EPS 400 EPS = DLAMCH( '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, 'Zomplex 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 ZCHKGE( 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 ZDRVGE( 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 ZCHKGB( 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 ZDRVGB( 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 ZCHKGT( 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 ZDRVGT( 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 ZCHKPO( 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 ZDRVPO( 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 ZCHKPS( 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 ZCHKPP( 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 ZDRVPP( 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 ZCHKPB( 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 ZDRVPB( 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 ZCHKPT( 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 ZDRVPT( 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* 644 NTYPES = 10 645 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 646* 647 IF( TSTCHK ) THEN 648 CALL ZCHKHE( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 649 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 650 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 651 $ WORK, RWORK, IWORK, NOUT ) 652 ELSE 653 WRITE( NOUT, FMT = 9989 )PATH 654 END IF 655* 656 IF( TSTDRV ) THEN 657 CALL ZDRVHE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 658 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 659 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 660 $ NOUT ) 661 ELSE 662 WRITE( NOUT, FMT = 9988 )PATH 663 END IF 664 665 ELSE IF( LSAMEN( 2, C2, 'HR' ) ) THEN 666* 667* HR: Hermitian indefinite matrices, 668* with bounded Bunch-Kaufman (rook) pivoting algorithm, 669* 670 NTYPES = 10 671 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 672* 673 IF( TSTCHK ) THEN 674 CALL ZCHKHE_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 675 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 676 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 677 $ WORK, RWORK, IWORK, NOUT ) 678 ELSE 679 WRITE( NOUT, FMT = 9989 )PATH 680 END IF 681* 682 IF( TSTDRV ) THEN 683 CALL ZDRVHE_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 684 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 685 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, 686 $ RWORK, IWORK, NOUT ) 687 ELSE 688 WRITE( NOUT, FMT = 9988 )PATH 689 END IF 690* 691 ELSE IF( LSAMEN( 2, C2, 'HK' ) ) THEN 692* 693* HK: Hermitian indefinite matrices, 694* with bounded Bunch-Kaufman (rook) pivoting algorithm, 695* different matrix storage format than HR path version. 696* 697 NTYPES = 10 698 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 699* 700 IF( TSTCHK ) THEN 701 CALL ZCHKHE_RK ( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 702 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 703 $ E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), 704 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 705 ELSE 706 WRITE( NOUT, FMT = 9989 )PATH 707 END IF 708* 709 IF( TSTDRV ) THEN 710 CALL ZDRVHE_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 711 $ LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ), 712 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, 713 $ RWORK, IWORK, NOUT ) 714 ELSE 715 WRITE( NOUT, FMT = 9988 )PATH 716 END IF 717* 718 ELSE IF( LSAMEN( 2, C2, 'HA' ) ) THEN 719* 720* HA: Hermitian matrices, 721* Aasen Algorithm 722* 723 NTYPES = 10 724 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 725* 726 IF( TSTCHK ) THEN 727 CALL ZCHKHE_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, 728 $ NSVAL, THRESH, TSTERR, LDA, 729 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 730 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 731 $ WORK, RWORK, IWORK, NOUT ) 732 ELSE 733 WRITE( NOUT, FMT = 9989 )PATH 734 END IF 735* 736 IF( TSTDRV ) THEN 737 CALL ZDRVHE_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 738 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 739 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 740 $ WORK, RWORK, IWORK, NOUT ) 741 ELSE 742 WRITE( NOUT, FMT = 9988 )PATH 743 END IF 744* 745 ELSE IF( LSAMEN( 2, C2, 'H2' ) ) THEN 746* 747* H2: Hermitian matrices, 748* with partial (Aasen's) pivoting algorithm 749* 750 NTYPES = 10 751 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 752* 753 IF( TSTCHK ) THEN 754 CALL ZCHKHE_AA_2STAGE( DOTYPE, NN, NVAL, NNB2, NBVAL2, 755 $ NNS, NSVAL, THRESH, TSTERR, LDA, 756 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 757 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 758 $ WORK, RWORK, IWORK, NOUT ) 759 ELSE 760 WRITE( NOUT, FMT = 9989 )PATH 761 END IF 762* 763 IF( TSTDRV ) THEN 764 CALL ZDRVHE_AA_2STAGE( 765 $ DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 766 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 767 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 768 $ WORK, RWORK, IWORK, NOUT ) 769 ELSE 770 WRITE( NOUT, FMT = 9988 )PATH 771 END IF 772* 773* 774 ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN 775* 776* HP: Hermitian indefinite packed matrices 777* 778 NTYPES = 10 779 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 780* 781 IF( TSTCHK ) THEN 782 CALL ZCHKHP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 783 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 784 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK, 785 $ IWORK, NOUT ) 786 ELSE 787 WRITE( NOUT, FMT = 9989 )PATH 788 END IF 789* 790 IF( TSTDRV ) THEN 791 CALL ZDRVHP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 792 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 793 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 794 $ NOUT ) 795 ELSE 796 WRITE( NOUT, FMT = 9988 )PATH 797 END IF 798* 799 ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN 800* 801* SY: symmetric indefinite matrices, 802* with partial (Bunch-Kaufman) pivoting algorithm 803* 804 NTYPES = 11 805 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 806* 807 IF( TSTCHK ) THEN 808 CALL ZCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 809 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 810 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 811 $ WORK, RWORK, IWORK, NOUT ) 812 ELSE 813 WRITE( NOUT, FMT = 9989 )PATH 814 END IF 815* 816 IF( TSTDRV ) THEN 817 CALL ZDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 818 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 819 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 820 $ NOUT ) 821 ELSE 822 WRITE( NOUT, FMT = 9988 )PATH 823 END IF 824* 825 ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN 826* 827* SR: symmetric indefinite matrices, 828* with bounded Bunch-Kaufman (rook) pivoting algorithm 829* 830 NTYPES = 11 831 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 832* 833 IF( TSTCHK ) THEN 834 CALL ZCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 835 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 836 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 837 $ WORK, RWORK, IWORK, NOUT ) 838 ELSE 839 WRITE( NOUT, FMT = 9989 )PATH 840 END IF 841* 842 IF( TSTDRV ) THEN 843 CALL ZDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 844 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 845 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, 846 $ RWORK, IWORK, NOUT ) 847 ELSE 848 WRITE( NOUT, FMT = 9988 )PATH 849 END IF 850* 851 ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN 852* 853* SK: symmetric indefinite matrices, 854* with bounded Bunch-Kaufman (rook) pivoting algorithm, 855* different matrix storage format than SR path version. 856* 857 NTYPES = 11 858 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 859* 860 IF( TSTCHK ) THEN 861 CALL ZCHKSY_RK( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 862 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 863 $ E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), 864 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 865 ELSE 866 WRITE( NOUT, FMT = 9989 )PATH 867 END IF 868* 869 IF( TSTDRV ) THEN 870 CALL ZDRVSY_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 871 $ LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ), 872 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, 873 $ RWORK, IWORK, NOUT ) 874 ELSE 875 WRITE( NOUT, FMT = 9988 )PATH 876 END IF 877* 878 ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN 879* 880* SA: symmetric indefinite matrices with Aasen's algorithm, 881* 882 NTYPES = 11 883 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 884* 885 IF( TSTCHK ) THEN 886 CALL ZCHKSY_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 887 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 888 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), 889 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT ) 890 ELSE 891 WRITE( NOUT, FMT = 9989 )PATH 892 END IF 893* 894 IF( TSTDRV ) THEN 895 CALL ZDRVSY_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 896 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 897 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, 898 $ RWORK, IWORK, NOUT ) 899 ELSE 900 WRITE( NOUT, FMT = 9988 )PATH 901 END IF 902* 903 ELSE IF( LSAMEN( 2, C2, 'S2' ) ) THEN 904* 905* S2: symmetric indefinite matrices with Aasen's algorithm 906* 2 stage 907* 908 NTYPES = 11 909 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 910* 911 IF( TSTCHK ) THEN 912 CALL ZCHKSY_AA_2STAGE( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, 913 $ NSVAL, THRESH, TSTERR, LDA, 914 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 915 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), 916 $ WORK, RWORK, IWORK, NOUT ) 917 ELSE 918 WRITE( NOUT, FMT = 9989 )PATH 919 END IF 920* 921 IF( TSTDRV ) THEN 922 CALL ZDRVSY_AA_2STAGE( 923 $ DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, 924 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 925 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, 926 $ RWORK, IWORK, NOUT ) 927 ELSE 928 WRITE( NOUT, FMT = 9988 )PATH 929 END IF 930* 931 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN 932* 933* SP: symmetric indefinite packed matrices, 934* with partial (Bunch-Kaufman) pivoting algorithm 935* 936 NTYPES = 11 937 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 938* 939 IF( TSTCHK ) THEN 940 CALL ZCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 941 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), 942 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK, 943 $ IWORK, NOUT ) 944 ELSE 945 WRITE( NOUT, FMT = 9989 )PATH 946 END IF 947* 948 IF( TSTDRV ) THEN 949 CALL ZDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA, 950 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), 951 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK, 952 $ NOUT ) 953 ELSE 954 WRITE( NOUT, FMT = 9988 )PATH 955 END IF 956* 957 ELSE IF( LSAMEN( 2, C2, 'TR' ) ) THEN 958* 959* TR: triangular matrices 960* 961 NTYPES = 18 962 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 963* 964 IF( TSTCHK ) THEN 965 CALL ZCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL, 966 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ), 967 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK, 968 $ NOUT ) 969 ELSE 970 WRITE( NOUT, FMT = 9989 )PATH 971 END IF 972* 973 ELSE IF( LSAMEN( 2, C2, 'TP' ) ) THEN 974* 975* TP: triangular packed matrices 976* 977 NTYPES = 18 978 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 979* 980 IF( TSTCHK ) THEN 981 CALL ZCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 982 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), 983 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT ) 984 ELSE 985 WRITE( NOUT, FMT = 9989 )PATH 986 END IF 987* 988 ELSE IF( LSAMEN( 2, C2, 'TB' ) ) THEN 989* 990* TB: triangular banded matrices 991* 992 NTYPES = 17 993 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 994* 995 IF( TSTCHK ) THEN 996 CALL ZCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, 997 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), 998 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT ) 999 ELSE 1000 WRITE( NOUT, FMT = 9989 )PATH 1001 END IF 1002* 1003 ELSE IF( LSAMEN( 2, C2, 'QR' ) ) THEN 1004* 1005* QR: QR factorization 1006* 1007 NTYPES = 8 1008 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 1009* 1010 IF( TSTCHK ) THEN 1011 CALL ZCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 1012 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 1013 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 1014 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 1015 $ WORK, RWORK, IWORK, NOUT ) 1016 ELSE 1017 WRITE( NOUT, FMT = 9989 )PATH 1018 END IF 1019* 1020 ELSE IF( LSAMEN( 2, C2, 'LQ' ) ) THEN 1021* 1022* LQ: LQ factorization 1023* 1024 NTYPES = 8 1025 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 1026* 1027 IF( TSTCHK ) THEN 1028 CALL ZCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 1029 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 1030 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 1031 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 1032 $ WORK, RWORK, NOUT ) 1033 ELSE 1034 WRITE( NOUT, FMT = 9989 )PATH 1035 END IF 1036* 1037 ELSE IF( LSAMEN( 2, C2, 'QL' ) ) THEN 1038* 1039* QL: QL factorization 1040* 1041 NTYPES = 8 1042 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 1043* 1044 IF( TSTCHK ) THEN 1045 CALL ZCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 1046 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 1047 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 1048 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 1049 $ WORK, RWORK, NOUT ) 1050 ELSE 1051 WRITE( NOUT, FMT = 9989 )PATH 1052 END IF 1053* 1054 ELSE IF( LSAMEN( 2, C2, 'RQ' ) ) THEN 1055* 1056* RQ: RQ factorization 1057* 1058 NTYPES = 8 1059 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 1060* 1061 IF( TSTCHK ) THEN 1062 CALL ZCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 1063 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ), 1064 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ), 1065 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), 1066 $ WORK, RWORK, IWORK, NOUT ) 1067 ELSE 1068 WRITE( NOUT, FMT = 9989 )PATH 1069 END IF 1070* 1071 ELSE IF( LSAMEN( 2, C2, 'EQ' ) ) THEN 1072* 1073* EQ: Equilibration routines for general and positive definite 1074* matrices (THREQ should be between 2 and 10) 1075* 1076 IF( TSTCHK ) THEN 1077 CALL ZCHKEQ( THREQ, NOUT ) 1078 ELSE 1079 WRITE( NOUT, FMT = 9989 )PATH 1080 END IF 1081* 1082 ELSE IF( LSAMEN( 2, C2, 'TZ' ) ) THEN 1083* 1084* TZ: Trapezoidal matrix 1085* 1086 NTYPES = 3 1087 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 1088* 1089 IF( TSTCHK ) THEN 1090 CALL ZCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, 1091 $ A( 1, 1 ), A( 1, 2 ), S( 1 ), 1092 $ B( 1, 1 ), WORK, RWORK, NOUT ) 1093 ELSE 1094 WRITE( NOUT, FMT = 9989 )PATH 1095 END IF 1096* 1097 ELSE IF( LSAMEN( 2, C2, 'QP' ) ) THEN 1098* 1099* QP: QR factorization with pivoting 1100* 1101 NTYPES = 6 1102 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT ) 1103* 1104 IF( TSTCHK ) THEN 1105 CALL ZCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, 1106 $ THRESH, A( 1, 1 ), A( 1, 2 ), S( 1 ), 1107 $ B( 1, 1 ), WORK, RWORK, IWORK, 1108 $ 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 ZDRVLS( 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* 1130 ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN 1131* 1132* QT: QRT routines for general matrices 1133* 1134 IF( TSTCHK ) THEN 1135 CALL ZCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1136 $ NBVAL, NOUT ) 1137 ELSE 1138 WRITE( NOUT, FMT = 9989 )PATH 1139 END IF 1140* 1141 ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN 1142* 1143* QX: QRT routines for triangular-pentagonal matrices 1144* 1145 IF( TSTCHK ) THEN 1146 CALL ZCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1147 $ NBVAL, NOUT ) 1148 ELSE 1149 WRITE( NOUT, FMT = 9989 )PATH 1150 END IF 1151* 1152 ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN 1153* 1154* TQ: LQT routines for general matrices 1155* 1156 IF( TSTCHK ) THEN 1157 CALL ZCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1158 $ NBVAL, NOUT ) 1159 ELSE 1160 WRITE( NOUT, FMT = 9989 )PATH 1161 END IF 1162* 1163 ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN 1164* 1165* XQ: LQT routines for triangular-pentagonal matrices 1166* 1167 IF( TSTCHK ) THEN 1168 CALL ZCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1169 $ NBVAL, NOUT ) 1170 ELSE 1171 WRITE( NOUT, FMT = 9989 )PATH 1172 END IF 1173* 1174 ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN 1175* 1176* TS: QR routines for tall-skinny matrices 1177* 1178 IF( TSTCHK ) THEN 1179 CALL ZCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1180 $ NBVAL, NOUT ) 1181 ELSE 1182 WRITE( NOUT, FMT = 9989 )PATH 1183 END IF 1184* 1185 ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN 1186* 1187* TQ: LQT routines for general matrices 1188* 1189 IF( TSTCHK ) THEN 1190 CALL ZCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1191 $ NBVAL, NOUT ) 1192 ELSE 1193 WRITE( NOUT, FMT = 9989 )PATH 1194 END IF 1195* 1196 ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN 1197* 1198* XQ: LQT routines for triangular-pentagonal matrices 1199* 1200 IF( TSTCHK ) THEN 1201 CALL ZCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1202 $ NBVAL, NOUT ) 1203 ELSE 1204 WRITE( NOUT, FMT = 9989 )PATH 1205 END IF 1206* 1207 ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN 1208* 1209* TS: QR routines for tall-skinny matrices 1210* 1211 IF( TSTCHK ) THEN 1212 CALL ZCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1213 $ NBVAL, NOUT ) 1214 ELSE 1215 WRITE( NOUT, FMT = 9989 )PATH 1216 END IF 1217* 1218 ELSE IF( LSAMEN( 2, C2, 'HH' ) ) THEN 1219* 1220* HH: Householder reconstruction for tall-skinny matrices 1221* 1222 IF( TSTCHK ) THEN 1223 CALL ZCHKUNHR_COL( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, 1224 $ NBVAL, NOUT ) 1225 ELSE 1226 WRITE( NOUT, FMT = 9989 ) PATH 1227 END IF 1228* 1229 ELSE 1230* 1231 WRITE( NOUT, FMT = 9990 )PATH 1232 END IF 1233* 1234* Go back to get another input line. 1235* 1236 GO TO 80 1237* 1238* Branch to this line when the last record is read. 1239* 1240 140 CONTINUE 1241 CLOSE ( NIN ) 1242 S2 = DSECND( ) 1243 WRITE( NOUT, FMT = 9998 ) 1244 WRITE( NOUT, FMT = 9997 )S2 - S1 1245* 1246 DEALLOCATE (A, STAT = AllocateStatus) 1247 DEALLOCATE (B, STAT = AllocateStatus) 1248 DEALLOCATE (RWORK, STAT = AllocateStatus) 1249 DEALLOCATE (WORK, STAT = AllocateStatus) 1250* 1251 9999 FORMAT( / ' Execution not attempted due to input errors' ) 1252 9998 FORMAT( / ' End of tests' ) 1253 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / ) 1254 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=', 1255 $ I6 ) 1256 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=', 1257 $ I6 ) 1258 9994 FORMAT( ' Tests of the COMPLEX*16 LAPACK routines ', 1259 $ / ' LAPACK VERSION ', I1, '.', I1, '.', I1, 1260 $ / / ' The following parameter values will be used:' ) 1261 9993 FORMAT( 4X, A4, ': ', 10I6, / 11X, 10I6 ) 1262 9992 FORMAT( / ' Routines pass computational tests if test ratio is ', 1263 $ 'less than', F8.2, / ) 1264 9991 FORMAT( ' Relative machine ', A, ' is taken to be', D16.6 ) 1265 9990 FORMAT( / 1X, A3, ': Unrecognized path name' ) 1266 9989 FORMAT( / 1X, A3, ' routines were not tested' ) 1267 9988 FORMAT( / 1X, A3, ' driver routines were not tested' ) 1268* 1269* End of ZCHKAA 1270* 1271 END 1272