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