3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
19 *> CCHKAA is the main test program for the COMPLEX linear equation
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
78 *> The maximum allowable value for M and N.
81 *> The number of different values that can be used for each of
82 *> M, N, NRHS, NB, NX and RANK
85 *> The maximum number of right hand sides
88 *> The maximum number of matrix types to use for testing
91 *> The unit number for input
94 *> The unit number for output
100 *> \author Univ. of Tennessee
101 *> \author Univ. of California Berkeley
102 *> \author Univ. of Colorado Denver
105 *> \date November 2015
107 *> \ingroup complex_lin
109 * =====================================================================
112 * -- LAPACK test routine (version 3.6.0) --
113 * -- LAPACK is a software package provided by Univ. of Tennessee, --
114 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
117 * =====================================================================
121 PARAMETER ( NMAX = 132 )
123 PARAMETER ( MAXIN = 12 )
125 PARAMETER ( MAXRHS = 16 )
127 PARAMETER ( MATMAX = 30 )
129 PARAMETER ( NIN = 5, NOUT = 6 )
131 PARAMETER ( KDMAX = NMAX+( NMAX+1 ) / 4 )
133 * .. Local Scalars ..
134 LOGICAL FATAL, TSTCHK, TSTDRV, TSTERR
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
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 )
155 * .. External Functions ..
156 LOGICAL LSAME, LSAMEN
158 EXTERNAL LSAME, LSAMEN, SECOND, SLAMCH
160 * .. External Subroutines ..
161 EXTERNAL ALAREQ, CCHKEQ, CCHKGB, CCHKGE, CCHKGT, CCHKHE,
162 $ CCHKHE_ROOK, CCHKHP, CCHKLQ, CCHKPB, CCHKPO,
163 $ CCHKPS, CCHKPP, CCHKPT, CCHKQ3, CCHKQL,
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
171 * .. Scalars in Common ..
176 * .. Arrays in Common ..
177 INTEGER IPARMS( 100 )
179 * .. Common blocks ..
180 COMMON / CLAENV / IPARMS
181 COMMON / INFOC / INFOT, NUNIT, OK, LERR
182 COMMON / SRNAMC / SRNAMT
184 * .. Data statements ..
185 DATA THREQ / 2.0 / , INTSTR / '0123456789' /
187 * .. Executable Statements ..
197 * Report values of parameters.
199 CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
200 WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
202 * Read the values of M
204 READ( NIN, FMT = * )NM
206 WRITE( NOUT, FMT = 9996 )' NM ', NM, 1
209 ELSE IF( NM.GT.MAXIN ) THEN
210 WRITE( NOUT, FMT = 9995 )' NM ', NM, MAXIN
214 READ( NIN, FMT = * )( MVAL( I ), I = 1, NM )
216 IF( MVAL( I ).LT.0 ) THEN
217 WRITE( NOUT, FMT = 9996 )' M ', MVAL( I ), 0
219 ELSE IF( MVAL( I ).GT.NMAX ) THEN
220 WRITE( NOUT, FMT = 9995 )' M ', MVAL( I ), NMAX
225 $ WRITE( NOUT, FMT = 9993 )'M ', ( MVAL( I ), I = 1, NM )
227 * Read the values of N
229 READ( NIN, FMT = * )NN
231 WRITE( NOUT, FMT = 9996 )' NN ', NN, 1
234 ELSE IF( NN.GT.MAXIN ) THEN
235 WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN
239 READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
241 IF( NVAL( I ).LT.0 ) THEN
242 WRITE( NOUT, FMT = 9996 )' N ', NVAL( I ), 0
244 ELSE IF( NVAL( I ).GT.NMAX ) THEN
245 WRITE( NOUT, FMT = 9995 )' N ', NVAL( I ), NMAX
250 $ WRITE( NOUT, FMT = 9993 )'N ', ( NVAL( I ), I = 1, NN )
252 * Read the values of NRHS
254 READ( NIN, FMT = * )NNS
256 WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1
259 ELSE IF( NNS.GT.MAXIN ) THEN
260 WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN
264 READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS )
266 IF( NSVAL( I ).LT.0 ) THEN
267 WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0
269 ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN
270 WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS
275 $ WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS )
277 * Read the values of NB
279 READ( NIN, FMT = * )NNB
281 WRITE( NOUT, FMT = 9996 )'NNB ', NNB, 1
284 ELSE IF( NNB.GT.MAXIN ) THEN
285 WRITE( NOUT, FMT = 9995 )'NNB ', NNB, MAXIN
289 READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB )
291 IF( NBVAL( I ).LT.0 ) THEN
292 WRITE( NOUT, FMT = 9996 )' NB ', NBVAL( I ), 0
297 $ WRITE( NOUT, FMT = 9993 )'NB ', ( NBVAL( I ), I = 1, NNB )
299 * Set NBVAL2 to be the set of unique values of NB
305 IF( NB.EQ.NBVAL2( J ) )
312 * Read the values of NX
314 READ( NIN, FMT = * )( NXVAL( I ), I = 1, NNB )
316 IF( NXVAL( I ).LT.0 ) THEN
317 WRITE( NOUT, FMT = 9996 )' NX ', NXVAL( I ), 0
322 $ WRITE( NOUT, FMT = 9993 )'NX ', ( NXVAL( I ), I = 1, NNB )
324 * Read the values of RANKVAL
326 READ( NIN, FMT = * )NRANK
328 WRITE( NOUT, FMT = 9996 )' NRANK ', NRANK, 1
331 ELSE IF( NN.GT.MAXIN ) THEN
332 WRITE( NOUT, FMT = 9995 )' NRANK ', NRANK, MAXIN
336 READ( NIN, FMT = * )( RANKVAL( I ), I = 1, NRANK )
338 IF( RANKVAL( I ).LT.0 ) THEN
339 WRITE( NOUT, FMT = 9996 )' RANK ', RANKVAL( I ), 0
341 ELSE IF( RANKVAL( I ).GT.100 ) THEN
342 WRITE( NOUT, FMT = 9995 )' RANK ', RANKVAL( I ), 100
347 $ WRITE( NOUT, FMT = 9993 )'RANK % OF N',
348 $ ( RANKVAL( I ), I = 1, NRANK )
350 * Read the threshold value for the test ratios.
352 READ( NIN, FMT = * )THRESH
353 WRITE( NOUT, FMT = 9992 )THRESH
355 * Read the flag that indicates whether to test the LAPACK routines.
357 READ( NIN, FMT = * )TSTCHK
359 * Read the flag that indicates whether to test the driver routines.
361 READ( NIN, FMT = * )TSTDRV
363 * Read the flag that indicates whether to test the error exits.
365 READ( NIN, FMT = * )TSTERR
368 WRITE( NOUT, FMT = 9999 )
372 * Calculate and print the machine dependent constants.
374 EPS = SLAMCH( 'Underflow threshold' )
375 WRITE( NOUT, FMT = 9991 )'underflow', EPS
376 EPS = SLAMCH( 'Overflow threshold' )
377 WRITE( NOUT, FMT = 9991 )'overflow ', EPS
378 EPS = SLAMCH( 'Epsilon' )
379 WRITE( NOUT, FMT = 9991 )'precision', EPS
380 WRITE( NOUT, FMT = * )
385 * Read a test path and the number of matrix types to use.
387 READ( NIN, FMT = '(A72)', END = 140 )ALINE
395 IF( ALINE( I: I ).EQ.' ' )
401 IF( C1.EQ.INTSTR( K: K ) ) THEN
408 NMATS = NMATS*10 + IC
417 * Check first character for correct precision.
419 IF( .NOT.LSAME( C1, 'Complex precision' ) ) THEN
420 WRITE( NOUT, FMT = 9990 )PATH
422 ELSE IF( NMATS.LE.0 ) THEN
424 * Check for a positive number of tests requested.
426 WRITE( NOUT, FMT = 9989 )PATH
428 ELSE IF( LSAMEN( 2, C2, 'GE' ) ) THEN
430 * GE: general matrices
433 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
436 CALL CCHKGE( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
437 $ NSVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
438 $ A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
439 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
441 WRITE( NOUT, FMT = 9989 )PATH
445 CALL CDRVGE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
446 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
447 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
448 $ RWORK, IWORK, NOUT )
450 WRITE( NOUT, FMT = 9988 )PATH
453 ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
455 * GB: general banded matrices
457 LA = ( 2*KDMAX+1 )*NMAX
458 LAFAC = ( 3*KDMAX+1 )*NMAX
460 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
463 CALL CCHKGB( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
464 $ NSVAL, THRESH, TSTERR, A( 1, 1 ), LA,
465 $ A( 1, 3 ), LAFAC, B( 1, 1 ), B( 1, 2 ),
466 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
468 WRITE( NOUT, FMT = 9989 )PATH
472 CALL CDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
473 $ A( 1, 1 ), LA, A( 1, 3 ), LAFAC, A( 1, 6 ),
474 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S,
475 $ WORK, RWORK, IWORK, NOUT )
477 WRITE( NOUT, FMT = 9988 )PATH
480 ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN
482 * GT: general tridiagonal matrices
485 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
488 CALL CCHKGT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
489 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
490 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
492 WRITE( NOUT, FMT = 9989 )PATH
496 CALL CDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
497 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
498 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
500 WRITE( NOUT, FMT = 9988 )PATH
503 ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN
505 * PO: positive definite matrices
508 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
511 CALL CCHKPO( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
512 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
513 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
514 $ WORK, RWORK, NOUT )
516 WRITE( NOUT, FMT = 9989 )PATH
520 CALL CDRVPO( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
521 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
522 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
525 WRITE( NOUT, FMT = 9988 )PATH
528 ELSE IF( LSAMEN( 2, C2, 'PS' ) ) THEN
530 * PS: positive semi-definite matrices
534 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
537 CALL CCHKPS( DOTYPE, NN, NVAL, NNB2, NBVAL2, NRANK,
538 $ RANKVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
539 $ A( 1, 2 ), A( 1, 3 ), PIV, WORK, RWORK,
542 WRITE( NOUT, FMT = 9989 )PATH
545 ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
547 * PP: positive definite packed matrices
550 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
553 CALL CCHKPP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
554 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
555 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
558 WRITE( NOUT, FMT = 9989 )PATH
562 CALL CDRVPP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
563 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
564 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
567 WRITE( NOUT, FMT = 9988 )PATH
570 ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
572 * PB: positive definite banded matrices
575 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
578 CALL CCHKPB( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
579 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
580 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
581 $ WORK, RWORK, NOUT )
583 WRITE( NOUT, FMT = 9989 )PATH
587 CALL CDRVPB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
588 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
589 $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
592 WRITE( NOUT, FMT = 9988 )PATH
595 ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN
597 * PT: positive definite tridiagonal matrices
600 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
603 CALL CCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
604 $ A( 1, 1 ), S, A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
605 $ B( 1, 3 ), WORK, RWORK, NOUT )
607 WRITE( NOUT, FMT = 9989 )PATH
611 CALL CDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
612 $ A( 1, 1 ), S, A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
613 $ B( 1, 3 ), WORK, RWORK, NOUT )
615 WRITE( NOUT, FMT = 9988 )PATH
618 ELSE IF( LSAMEN( 2, C2, 'HE' ) ) THEN
620 * HE: Hermitian indefinite matrices,
621 * with partial (Bunch-Kaufman) pivoting algorithm
624 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
627 CALL CCHKHE( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
628 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
629 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
630 $ WORK, RWORK, IWORK, NOUT )
632 WRITE( NOUT, FMT = 9989 )PATH
636 CALL CDRVHE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
637 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
638 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
641 WRITE( NOUT, FMT = 9988 )PATH
644 ELSE IF( LSAMEN( 2, C2, 'HR' ) ) THEN
646 * HR: Hermitian indefinite matrices,
647 * with "rook" (bounded Bunch-Kaufman) pivoting algorithm
650 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
653 CALL CCHKHE_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
654 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
655 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
656 $ WORK, RWORK, IWORK, NOUT )
658 WRITE( NOUT, FMT = 9989 )PATH
662 CALL CDRVHE_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
663 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
664 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
665 $ RWORK, IWORK, NOUT )
667 WRITE( NOUT, FMT = 9988 )PATH
670 ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN
672 * HP: Hermitian indefinite packed matrices,
673 * with partial (Bunch-Kaufman) pivoting algorithm
676 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
679 CALL CCHKHP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
680 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
681 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
684 WRITE( NOUT, FMT = 9989 )PATH
688 CALL CDRVHP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
689 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
690 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
693 WRITE( NOUT, FMT = 9988 )PATH
696 ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN
698 * SY: symmetric indefinite matrices,
699 * with partial (Bunch-Kaufman) pivoting algorithm
702 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
705 CALL CCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
706 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
707 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
708 $ WORK, RWORK, IWORK, NOUT )
710 WRITE( NOUT, FMT = 9989 )PATH
714 CALL CDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
715 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
716 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
719 WRITE( NOUT, FMT = 9988 )PATH
722 ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
724 * SR: symmetric indefinite matrices,
725 * with "rook" (bounded Bunch-Kaufman) pivoting algorithm
728 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
731 CALL CCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
732 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
733 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
734 $ WORK, RWORK, IWORK, NOUT )
736 WRITE( NOUT, FMT = 9989 )PATH
740 CALL CDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
741 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
742 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
743 $ RWORK, IWORK, NOUT )
745 WRITE( NOUT, FMT = 9988 )PATH
748 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
750 * SP: symmetric indefinite packed matrices,
751 * with partial (Bunch-Kaufman) pivoting algorithm
754 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
757 CALL CCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
758 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
759 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
762 WRITE( NOUT, FMT = 9989 )PATH
766 CALL CDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
767 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
768 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
771 WRITE( NOUT, FMT = 9988 )PATH
774 ELSE IF( LSAMEN( 2, C2, 'TR' ) ) THEN
776 * TR: triangular matrices
779 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
782 CALL CCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
783 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
784 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
787 WRITE( NOUT, FMT = 9989 )PATH
790 ELSE IF( LSAMEN( 2, C2, 'TP' ) ) THEN
792 * TP: triangular packed matrices
795 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
798 CALL CCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
799 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
800 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
802 WRITE( NOUT, FMT = 9989 )PATH
805 ELSE IF( LSAMEN( 2, C2, 'TB' ) ) THEN
807 * TB: triangular banded matrices
810 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
813 CALL CCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
814 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
815 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
817 WRITE( NOUT, FMT = 9989 )PATH
820 ELSE IF( LSAMEN( 2, C2, 'QR' ) ) THEN
822 * QR: QR factorization
825 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
828 CALL CCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
829 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
830 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
831 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
832 $ WORK, RWORK, IWORK, NOUT )
834 WRITE( NOUT, FMT = 9989 )PATH
837 ELSE IF( LSAMEN( 2, C2, 'LQ' ) ) THEN
839 * LQ: LQ factorization
842 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
845 CALL CCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
846 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
847 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
848 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
849 $ WORK, RWORK, NOUT )
851 WRITE( NOUT, FMT = 9989 )PATH
854 ELSE IF( LSAMEN( 2, C2, 'QL' ) ) THEN
856 * QL: QL factorization
859 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
862 CALL CCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
863 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
864 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
865 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
866 $ WORK, RWORK, NOUT )
868 WRITE( NOUT, FMT = 9989 )PATH
872 ELSE IF( LSAMEN( 2, C2, 'RQ' ) ) THEN
874 * RQ: RQ factorization
877 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
880 CALL CCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
881 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
882 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
883 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
884 $ WORK, RWORK, IWORK, NOUT )
886 WRITE( NOUT, FMT = 9989 )PATH
889 ELSE IF( LSAMEN( 2, C2, 'EQ' ) ) THEN
891 * EQ: Equilibration routines for general and positive definite
892 * matrices (THREQ should be between 2 and 10)
895 CALL CCHKEQ( THREQ, NOUT )
897 WRITE( NOUT, FMT = 9989 )PATH
900 ELSE IF( LSAMEN( 2, C2, 'TZ' ) ) THEN
902 * TZ: Trapezoidal matrix
905 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
908 CALL CCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR,
909 $ A( 1, 1 ), A( 1, 2 ), S( 1 ),
910 $ B( 1, 1 ), WORK, RWORK, NOUT )
912 WRITE( NOUT, FMT = 9989 )PATH
915 ELSE IF( LSAMEN( 2, C2, 'QP' ) ) THEN
917 * QP: QR factorization with pivoting
920 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
923 CALL CCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
924 $ THRESH, A( 1, 1 ), A( 1, 2 ), S( 1 ),
925 $ B( 1, 1 ), WORK, RWORK, IWORK, NOUT )
927 WRITE( NOUT, FMT = 9989 )PATH
931 ELSE IF( LSAMEN( 2, C2, 'LS' ) ) THEN
933 * LS: Least squares drivers
936 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
939 CALL CDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
940 $ NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ),
941 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
942 $ S( 1 ), S( NMAX+1 ), WORK, RWORK, IWORK,
945 WRITE( NOUT, FMT = 9989 )PATH
948 ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN
950 * QT: QRT routines for general matrices
953 CALL CCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
956 WRITE( NOUT, FMT = 9989 )PATH
959 ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN
961 * QX: QRT routines for triangular-pentagonal matrices
964 CALL CCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
967 WRITE( NOUT, FMT = 9989 )PATH
972 WRITE( NOUT, FMT = 9990 )PATH
975 * Go back to get another input line.
979 * Branch to this line when the last record is read.
984 WRITE( NOUT, FMT = 9998 )
985 WRITE( NOUT, FMT = 9997 )S2 - S1
987 9999 FORMAT( / ' Execution not attempted due to input errors' )
988 9998 FORMAT( / ' End of tests' )
989 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / )
990 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=',
992 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=',
994 9994 FORMAT( ' Tests of the COMPLEX LAPACK routines ',
995 $ / ' LAPACK VERSION ', I1, '.', I1, '.', I1,
996 $ / / ' The following parameter values will be used:' )
997 9993 FORMAT( 4X, A4, ': ', 10I6, / 11X, 10I6 )
998 9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
999 $ 'less than', F8.2, / )
1000 9991 FORMAT( ' Relative machine ', A, ' is taken to be', E16.6 )
1001 9990 FORMAT( / 1X, A3, ': Unrecognized path name' )
1002 9989 FORMAT( / 1X, A3, ' routines were not tested' )
1003 9988 FORMAT( / 1X, A3, ' driver routines were not tested' )