LAPACK  3.9.1
LAPACK: Linear Algebra PACKage
zchkaa.f
Go to the documentation of this file.
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 rwork( 150*nmax+2*maxrhs ), s( 2*nmax )
157  COMPLEX*16 a( ( kdmax+1 )*nmax, 7 ), b( nmax*maxrhs, 4 ),
158  $ e( nmax ), work( nmax, nmax+maxrhs+10 )
159 * ..
160 * .. External Functions ..
161  LOGICAL lsame, lsamen
162  DOUBLE PRECISION dlamch, dsecnd
163  EXTERNAL lsame, lsamen, dlamch, dsecnd
164 * ..
165 * .. External Subroutines ..
166  EXTERNAL alareq, zchkeq, zchkgb, zchkge, zchkgt, zchkhe,
178 * ..
179 * .. Scalars in Common ..
180  LOGICAL lerr, ok
181  CHARACTER*32 srnamt
182  INTEGER infot, nunit
183 * ..
184 * .. Arrays in Common ..
185  INTEGER iparms( 100 )
186 * ..
187 * .. Common blocks ..
188  COMMON / infoc / infot, nunit, ok, lerr
189  COMMON / srnamc / srnamt
190  COMMON / claenv / iparms
191 * ..
192 * .. Data statements ..
193  DATA threq / 2.0d0 / , intstr / '0123456789' /
194 * ..
195 * .. Executable Statements ..
196 *
197  s1 = dsecnd( )
198  lda = nmax
199  fatal = .false.
200 *
201 * Read a dummy line.
202 *
203  READ( nin, fmt = * )
204 *
205 * Report values of parameters.
206 *
207  CALL ilaver( vers_major, vers_minor, vers_patch )
208  WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
209 *
210 * Read the values of M
211 *
212  READ( nin, fmt = * )nm
213  IF( nm.LT.1 ) THEN
214  WRITE( nout, fmt = 9996 )' NM ', nm, 1
215  nm = 0
216  fatal = .true.
217  ELSE IF( nm.GT.maxin ) THEN
218  WRITE( nout, fmt = 9995 )' NM ', nm, maxin
219  nm = 0
220  fatal = .true.
221  END IF
222  READ( nin, fmt = * )( mval( i ), i = 1, nm )
223  DO 10 i = 1, nm
224  IF( mval( i ).LT.0 ) THEN
225  WRITE( nout, fmt = 9996 )' M ', mval( i ), 0
226  fatal = .true.
227  ELSE IF( mval( i ).GT.nmax ) THEN
228  WRITE( nout, fmt = 9995 )' M ', mval( i ), nmax
229  fatal = .true.
230  END IF
231  10 CONTINUE
232  IF( nm.GT.0 )
233  $ WRITE( nout, fmt = 9993 )'M ', ( mval( i ), i = 1, nm )
234 *
235 * Read the values of N
236 *
237  READ( nin, fmt = * )nn
238  IF( nn.LT.1 ) THEN
239  WRITE( nout, fmt = 9996 )' NN ', nn, 1
240  nn = 0
241  fatal = .true.
242  ELSE IF( nn.GT.maxin ) THEN
243  WRITE( nout, fmt = 9995 )' NN ', nn, maxin
244  nn = 0
245  fatal = .true.
246  END IF
247  READ( nin, fmt = * )( nval( i ), i = 1, nn )
248  DO 20 i = 1, nn
249  IF( nval( i ).LT.0 ) THEN
250  WRITE( nout, fmt = 9996 )' N ', nval( i ), 0
251  fatal = .true.
252  ELSE IF( nval( i ).GT.nmax ) THEN
253  WRITE( nout, fmt = 9995 )' N ', nval( i ), nmax
254  fatal = .true.
255  END IF
256  20 CONTINUE
257  IF( nn.GT.0 )
258  $ WRITE( nout, fmt = 9993 )'N ', ( nval( i ), i = 1, nn )
259 *
260 * Read the values of NRHS
261 *
262  READ( nin, fmt = * )nns
263  IF( nns.LT.1 ) THEN
264  WRITE( nout, fmt = 9996 )' NNS', nns, 1
265  nns = 0
266  fatal = .true.
267  ELSE IF( nns.GT.maxin ) THEN
268  WRITE( nout, fmt = 9995 )' NNS', nns, maxin
269  nns = 0
270  fatal = .true.
271  END IF
272  READ( nin, fmt = * )( nsval( i ), i = 1, nns )
273  DO 30 i = 1, nns
274  IF( nsval( i ).LT.0 ) THEN
275  WRITE( nout, fmt = 9996 )'NRHS', nsval( i ), 0
276  fatal = .true.
277  ELSE IF( nsval( i ).GT.maxrhs ) THEN
278  WRITE( nout, fmt = 9995 )'NRHS', nsval( i ), maxrhs
279  fatal = .true.
280  END IF
281  30 CONTINUE
282  IF( nns.GT.0 )
283  $ WRITE( nout, fmt = 9993 )'NRHS', ( nsval( i ), i = 1, nns )
284 *
285 * Read the values of NB
286 *
287  READ( nin, fmt = * )nnb
288  IF( nnb.LT.1 ) THEN
289  WRITE( nout, fmt = 9996 )'NNB ', nnb, 1
290  nnb = 0
291  fatal = .true.
292  ELSE IF( nnb.GT.maxin ) THEN
293  WRITE( nout, fmt = 9995 )'NNB ', nnb, maxin
294  nnb = 0
295  fatal = .true.
296  END IF
297  READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
298  DO 40 i = 1, nnb
299  IF( nbval( i ).LT.0 ) THEN
300  WRITE( nout, fmt = 9996 )' NB ', nbval( i ), 0
301  fatal = .true.
302  END IF
303  40 CONTINUE
304  IF( nnb.GT.0 )
305  $ WRITE( nout, fmt = 9993 )'NB ', ( nbval( i ), i = 1, nnb )
306 *
307 * Set NBVAL2 to be the set of unique values of NB
308 *
309  nnb2 = 0
310  DO 60 i = 1, nnb
311  nb = nbval( i )
312  DO 50 j = 1, nnb2
313  IF( nb.EQ.nbval2( j ) )
314  $ GO TO 60
315  50 CONTINUE
316  nnb2 = nnb2 + 1
317  nbval2( nnb2 ) = nb
318  60 CONTINUE
319 *
320 * Read the values of NX
321 *
322  READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
323  DO 70 i = 1, nnb
324  IF( nxval( i ).LT.0 ) THEN
325  WRITE( nout, fmt = 9996 )' NX ', nxval( i ), 0
326  fatal = .true.
327  END IF
328  70 CONTINUE
329  IF( nnb.GT.0 )
330  $ WRITE( nout, fmt = 9993 )'NX ', ( nxval( i ), i = 1, nnb )
331 *
332 * Read the values of RANKVAL
333 *
334  READ( nin, fmt = * )nrank
335  IF( nn.LT.1 ) THEN
336  WRITE( nout, fmt = 9996 )' NRANK ', nrank, 1
337  nrank = 0
338  fatal = .true.
339  ELSE IF( nn.GT.maxin ) THEN
340  WRITE( nout, fmt = 9995 )' NRANK ', nrank, maxin
341  nrank = 0
342  fatal = .true.
343  END IF
344  READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
345  DO i = 1, nrank
346  IF( rankval( i ).LT.0 ) THEN
347  WRITE( nout, fmt = 9996 )' RANK ', rankval( i ), 0
348  fatal = .true.
349  ELSE IF( rankval( i ).GT.100 ) THEN
350  WRITE( nout, fmt = 9995 )' RANK ', rankval( i ), 100
351  fatal = .true.
352  END IF
353  END DO
354  IF( nrank.GT.0 )
355  $ WRITE( nout, fmt = 9993 )'RANK % OF N',
356  $ ( rankval( i ), i = 1, nrank )
357 *
358 * Read the threshold value for the test ratios.
359 *
360  READ( nin, fmt = * )thresh
361  WRITE( nout, fmt = 9992 )thresh
362 *
363 * Read the flag that indicates whether to test the LAPACK routines.
364 *
365  READ( nin, fmt = * )tstchk
366 *
367 * Read the flag that indicates whether to test the driver routines.
368 *
369  READ( nin, fmt = * )tstdrv
370 *
371 * Read the flag that indicates whether to test the error exits.
372 *
373  READ( nin, fmt = * )tsterr
374 *
375  IF( fatal ) THEN
376  WRITE( nout, fmt = 9999 )
377  stop
378  END IF
379 *
380 * Calculate and print the machine dependent constants.
381 *
382  eps = dlamch( 'Underflow threshold' )
383  WRITE( nout, fmt = 9991 )'underflow', eps
384  eps = dlamch( 'Overflow threshold' )
385  WRITE( nout, fmt = 9991 )'overflow ', eps
386  eps = dlamch( 'Epsilon' )
387  WRITE( nout, fmt = 9991 )'precision', eps
388  WRITE( nout, fmt = * )
389  nrhs = nsval( 1 )
390 *
391  80 CONTINUE
392 *
393 * Read a test path and the number of matrix types to use.
394 *
395  READ( nin, fmt = '(A72)', END = 140 )aline
396  path = aline( 1: 3 )
397  nmats = matmax
398  i = 3
399  90 CONTINUE
400  i = i + 1
401  IF( i.GT.72 )
402  $ GO TO 130
403  IF( aline( i: i ).EQ.' ' )
404  $ GO TO 90
405  nmats = 0
406  100 CONTINUE
407  c1 = aline( i: i )
408  DO 110 k = 1, 10
409  IF( c1.EQ.intstr( k: k ) ) THEN
410  ic = k - 1
411  GO TO 120
412  END IF
413  110 CONTINUE
414  GO TO 130
415  120 CONTINUE
416  nmats = nmats*10 + ic
417  i = i + 1
418  IF( i.GT.72 )
419  $ GO TO 130
420  GO TO 100
421  130 CONTINUE
422  c1 = path( 1: 1 )
423  c2 = path( 2: 3 )
424 *
425 * Check first character for correct precision.
426 *
427  IF( .NOT.lsame( c1, 'Zomplex precision' ) ) THEN
428  WRITE( nout, fmt = 9990 )path
429 *
430  ELSE IF( nmats.LE.0 ) THEN
431 *
432 * Check for a positive number of tests requested.
433 *
434  WRITE( nout, fmt = 9989 )path
435 *
436  ELSE IF( lsamen( 2, c2, 'GE' ) ) THEN
437 *
438 * GE: general matrices
439 *
440  ntypes = 11
441  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
442 *
443  IF( tstchk ) THEN
444  CALL zchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
445  $ nsval, thresh, tsterr, lda, a( 1, 1 ),
446  $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
447  $ b( 1, 3 ), work, rwork, iwork, nout )
448  ELSE
449  WRITE( nout, fmt = 9989 )path
450  END IF
451 *
452  IF( tstdrv ) THEN
453  CALL zdrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
454  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
455  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
456  $ rwork, iwork, nout )
457  ELSE
458  WRITE( nout, fmt = 9988 )path
459  END IF
460 *
461  ELSE IF( lsamen( 2, c2, 'GB' ) ) THEN
462 *
463 * GB: general banded matrices
464 *
465  la = ( 2*kdmax+1 )*nmax
466  lafac = ( 3*kdmax+1 )*nmax
467  ntypes = 8
468  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
469 *
470  IF( tstchk ) THEN
471  CALL zchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
472  $ nsval, thresh, tsterr, a( 1, 1 ), la,
473  $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
474  $ b( 1, 3 ), work, rwork, iwork, nout )
475  ELSE
476  WRITE( nout, fmt = 9989 )path
477  END IF
478 *
479  IF( tstdrv ) THEN
480  CALL zdrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
481  $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
482  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
483  $ work, rwork, iwork, nout )
484  ELSE
485  WRITE( nout, fmt = 9988 )path
486  END IF
487 *
488  ELSE IF( lsamen( 2, c2, 'GT' ) ) THEN
489 *
490 * GT: general tridiagonal matrices
491 *
492  ntypes = 12
493  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
494 *
495  IF( tstchk ) THEN
496  CALL zchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
497  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
498  $ b( 1, 3 ), work, rwork, iwork, nout )
499  ELSE
500  WRITE( nout, fmt = 9989 )path
501  END IF
502 *
503  IF( tstdrv ) THEN
504  CALL zdrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
505  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
506  $ b( 1, 3 ), work, rwork, iwork, nout )
507  ELSE
508  WRITE( nout, fmt = 9988 )path
509  END IF
510 *
511  ELSE IF( lsamen( 2, c2, 'PO' ) ) THEN
512 *
513 * PO: positive definite matrices
514 *
515  ntypes = 9
516  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
517 *
518  IF( tstchk ) THEN
519  CALL zchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
520  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
521  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
522  $ work, rwork, nout )
523  ELSE
524  WRITE( nout, fmt = 9989 )path
525  END IF
526 *
527  IF( tstdrv ) THEN
528  CALL zdrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
529  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
530  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
531  $ rwork, nout )
532  ELSE
533  WRITE( nout, fmt = 9988 )path
534  END IF
535 *
536  ELSE IF( lsamen( 2, c2, 'PS' ) ) THEN
537 *
538 * PS: positive semi-definite matrices
539 *
540  ntypes = 9
541 *
542  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
543 *
544  IF( tstchk ) THEN
545  CALL zchkps( dotype, nn, nval, nnb2, nbval2, nrank,
546  $ rankval, thresh, tsterr, lda, a( 1, 1 ),
547  $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
548  $ nout )
549  ELSE
550  WRITE( nout, fmt = 9989 )path
551  END IF
552 *
553  ELSE IF( lsamen( 2, c2, 'PP' ) ) THEN
554 *
555 * PP: positive definite packed matrices
556 *
557  ntypes = 9
558  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
559 *
560  IF( tstchk ) THEN
561  CALL zchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
562  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
563  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
564  $ nout )
565  ELSE
566  WRITE( nout, fmt = 9989 )path
567  END IF
568 *
569  IF( tstdrv ) THEN
570  CALL zdrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
571  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
572  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
573  $ rwork, nout )
574  ELSE
575  WRITE( nout, fmt = 9988 )path
576  END IF
577 *
578  ELSE IF( lsamen( 2, c2, 'PB' ) ) THEN
579 *
580 * PB: positive definite banded matrices
581 *
582  ntypes = 8
583  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
584 *
585  IF( tstchk ) THEN
586  CALL zchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
587  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
588  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
589  $ work, rwork, nout )
590  ELSE
591  WRITE( nout, fmt = 9989 )path
592  END IF
593 *
594  IF( tstdrv ) THEN
595  CALL zdrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
596  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
597  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
598  $ rwork, nout )
599  ELSE
600  WRITE( nout, fmt = 9988 )path
601  END IF
602 *
603  ELSE IF( lsamen( 2, c2, 'PT' ) ) THEN
604 *
605 * PT: positive definite tridiagonal matrices
606 *
607  ntypes = 12
608  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
609 *
610  IF( tstchk ) THEN
611  CALL zchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
612  $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
613  $ b( 1, 3 ), work, rwork, nout )
614  ELSE
615  WRITE( nout, fmt = 9989 )path
616  END IF
617 *
618  IF( tstdrv ) THEN
619  CALL zdrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
620  $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
621  $ b( 1, 3 ), work, rwork, nout )
622  ELSE
623  WRITE( nout, fmt = 9988 )path
624  END IF
625 *
626  ELSE IF( lsamen( 2, c2, 'HE' ) ) THEN
627 *
628 * HE: Hermitian indefinite matrices
629 *
630  ntypes = 10
631  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
632 *
633  IF( tstchk ) THEN
634  CALL zchkhe( dotype, nn, nval, nnb2, nbval2, nns, nsval,
635  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
636  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
637  $ work, rwork, iwork, nout )
638  ELSE
639  WRITE( nout, fmt = 9989 )path
640  END IF
641 *
642  IF( tstdrv ) THEN
643  CALL zdrvhe( dotype, nn, nval, nrhs, thresh, tsterr, lda,
644  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
645  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
646  $ nout )
647  ELSE
648  WRITE( nout, fmt = 9988 )path
649  END IF
650 
651  ELSE IF( lsamen( 2, c2, 'HR' ) ) THEN
652 *
653 * HR: Hermitian indefinite matrices,
654 * with bounded Bunch-Kaufman (rook) pivoting algorithm,
655 *
656  ntypes = 10
657  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
658 *
659  IF( tstchk ) THEN
660  CALL zchkhe_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
661  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
662  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
663  $ work, rwork, iwork, nout )
664  ELSE
665  WRITE( nout, fmt = 9989 )path
666  END IF
667 *
668  IF( tstdrv ) THEN
669  CALL zdrvhe_rook( dotype, nn, nval, nrhs, thresh, tsterr,
670  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
671  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
672  $ rwork, iwork, nout )
673  ELSE
674  WRITE( nout, fmt = 9988 )path
675  END IF
676 *
677  ELSE IF( lsamen( 2, c2, 'HK' ) ) THEN
678 *
679 * HK: Hermitian indefinite matrices,
680 * with bounded Bunch-Kaufman (rook) pivoting algorithm,
681 * different matrix storage format than HR path version.
682 *
683  ntypes = 10
684  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
685 *
686  IF( tstchk ) THEN
687  CALL zchkhe_rk ( dotype, nn, nval, nnb2, nbval2, nns, nsval,
688  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
689  $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
690  $ b( 1, 3 ), work, rwork, iwork, nout )
691  ELSE
692  WRITE( nout, fmt = 9989 )path
693  END IF
694 *
695  IF( tstdrv ) THEN
696  CALL zdrvhe_rk( dotype, nn, nval, nrhs, thresh, tsterr,
697  $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
698  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
699  $ rwork, iwork, nout )
700  ELSE
701  WRITE( nout, fmt = 9988 )path
702  END IF
703 *
704  ELSE IF( lsamen( 2, c2, 'HA' ) ) THEN
705 *
706 * HA: Hermitian matrices,
707 * Aasen Algorithm
708 *
709  ntypes = 10
710  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
711 *
712  IF( tstchk ) THEN
713  CALL zchkhe_aa( dotype, nn, nval, nnb2, nbval2, nns,
714  $ nsval, thresh, tsterr, lda,
715  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
716  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
717  $ work, rwork, iwork, nout )
718  ELSE
719  WRITE( nout, fmt = 9989 )path
720  END IF
721 *
722  IF( tstdrv ) THEN
723  CALL zdrvhe_aa( dotype, nn, nval, nrhs, thresh, tsterr,
724  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
725  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
726  $ work, rwork, iwork, nout )
727  ELSE
728  WRITE( nout, fmt = 9988 )path
729  END IF
730 *
731  ELSE IF( lsamen( 2, c2, 'H2' ) ) THEN
732 *
733 * H2: Hermitian matrices,
734 * with partial (Aasen's) pivoting algorithm
735 *
736  ntypes = 10
737  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
738 *
739  IF( tstchk ) THEN
740  CALL zchkhe_aa_2stage( dotype, nn, nval, nnb2, nbval2,
741  $ nns, nsval, thresh, tsterr, lda,
742  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
743  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
744  $ work, rwork, iwork, nout )
745  ELSE
746  WRITE( nout, fmt = 9989 )path
747  END IF
748 *
749  IF( tstdrv ) THEN
750  CALL zdrvhe_aa_2stage(
751  $ dotype, nn, nval, nrhs, thresh, tsterr,
752  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
753  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
754  $ work, rwork, iwork, nout )
755  ELSE
756  WRITE( nout, fmt = 9988 )path
757  END IF
758 *
759 *
760  ELSE IF( lsamen( 2, c2, 'HP' ) ) THEN
761 *
762 * HP: Hermitian indefinite packed matrices
763 *
764  ntypes = 10
765  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
766 *
767  IF( tstchk ) THEN
768  CALL zchkhp( dotype, nn, nval, nns, nsval, thresh, tsterr,
769  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
770  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
771  $ iwork, nout )
772  ELSE
773  WRITE( nout, fmt = 9989 )path
774  END IF
775 *
776  IF( tstdrv ) THEN
777  CALL zdrvhp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
778  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
779  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
780  $ nout )
781  ELSE
782  WRITE( nout, fmt = 9988 )path
783  END IF
784 *
785  ELSE IF( lsamen( 2, c2, 'SY' ) ) THEN
786 *
787 * SY: symmetric indefinite matrices,
788 * with partial (Bunch-Kaufman) pivoting algorithm
789 *
790  ntypes = 11
791  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
792 *
793  IF( tstchk ) THEN
794  CALL zchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
795  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
796  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
797  $ work, rwork, iwork, nout )
798  ELSE
799  WRITE( nout, fmt = 9989 )path
800  END IF
801 *
802  IF( tstdrv ) THEN
803  CALL zdrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
804  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
805  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
806  $ nout )
807  ELSE
808  WRITE( nout, fmt = 9988 )path
809  END IF
810 *
811  ELSE IF( lsamen( 2, c2, 'SR' ) ) THEN
812 *
813 * SR: symmetric indefinite matrices,
814 * with bounded Bunch-Kaufman (rook) pivoting algorithm
815 *
816  ntypes = 11
817  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
818 *
819  IF( tstchk ) THEN
820  CALL zchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
821  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
822  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
823  $ work, rwork, iwork, nout )
824  ELSE
825  WRITE( nout, fmt = 9989 )path
826  END IF
827 *
828  IF( tstdrv ) THEN
829  CALL zdrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
830  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
831  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
832  $ rwork, iwork, nout )
833  ELSE
834  WRITE( nout, fmt = 9988 )path
835  END IF
836 *
837  ELSE IF( lsamen( 2, c2, 'SK' ) ) THEN
838 *
839 * SK: symmetric indefinite matrices,
840 * with bounded Bunch-Kaufman (rook) pivoting algorithm,
841 * different matrix storage format than SR path version.
842 *
843  ntypes = 11
844  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
845 *
846  IF( tstchk ) THEN
847  CALL zchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
848  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
849  $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
850  $ b( 1, 3 ), work, rwork, iwork, nout )
851  ELSE
852  WRITE( nout, fmt = 9989 )path
853  END IF
854 *
855  IF( tstdrv ) THEN
856  CALL zdrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
857  $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
858  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
859  $ rwork, iwork, nout )
860  ELSE
861  WRITE( nout, fmt = 9988 )path
862  END IF
863 *
864  ELSE IF( lsamen( 2, c2, 'SA' ) ) THEN
865 *
866 * SA: symmetric indefinite matrices with Aasen's algorithm,
867 *
868  ntypes = 11
869  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
870 *
871  IF( tstchk ) THEN
872  CALL zchksy_aa( dotype, nn, nval, nnb2, nbval2, nns, nsval,
873  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
874  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
875  $ b( 1, 3 ), work, rwork, iwork, nout )
876  ELSE
877  WRITE( nout, fmt = 9989 )path
878  END IF
879 *
880  IF( tstdrv ) THEN
881  CALL zdrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
882  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
883  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
884  $ rwork, iwork, nout )
885  ELSE
886  WRITE( nout, fmt = 9988 )path
887  END IF
888 *
889  ELSE IF( lsamen( 2, c2, 'S2' ) ) THEN
890 *
891 * S2: symmetric indefinite matrices with Aasen's algorithm
892 * 2 stage
893 *
894  ntypes = 11
895  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
896 *
897  IF( tstchk ) THEN
898  CALL zchksy_aa_2stage( dotype, nn, nval, nnb2, nbval2, nns,
899  $ nsval, thresh, tsterr, lda,
900  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
901  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
902  $ work, rwork, iwork, nout )
903  ELSE
904  WRITE( nout, fmt = 9989 )path
905  END IF
906 *
907  IF( tstdrv ) THEN
908  CALL zdrvsy_aa_2stage(
909  $ dotype, nn, nval, nrhs, thresh, tsterr,
910  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
911  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
912  $ rwork, iwork, nout )
913  ELSE
914  WRITE( nout, fmt = 9988 )path
915  END IF
916 *
917  ELSE IF( lsamen( 2, c2, 'SP' ) ) THEN
918 *
919 * SP: symmetric indefinite packed matrices,
920 * with partial (Bunch-Kaufman) pivoting algorithm
921 *
922  ntypes = 11
923  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
924 *
925  IF( tstchk ) THEN
926  CALL zchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
927  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
928  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
929  $ iwork, nout )
930  ELSE
931  WRITE( nout, fmt = 9989 )path
932  END IF
933 *
934  IF( tstdrv ) THEN
935  CALL zdrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
936  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
937  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
938  $ nout )
939  ELSE
940  WRITE( nout, fmt = 9988 )path
941  END IF
942 *
943  ELSE IF( lsamen( 2, c2, 'TR' ) ) THEN
944 *
945 * TR: triangular matrices
946 *
947  ntypes = 18
948  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
949 *
950  IF( tstchk ) THEN
951  CALL zchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
952  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
953  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
954  $ nout )
955  ELSE
956  WRITE( nout, fmt = 9989 )path
957  END IF
958 *
959  ELSE IF( lsamen( 2, c2, 'TP' ) ) THEN
960 *
961 * TP: triangular packed matrices
962 *
963  ntypes = 18
964  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
965 *
966  IF( tstchk ) THEN
967  CALL zchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
968  $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
969  $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
970  ELSE
971  WRITE( nout, fmt = 9989 )path
972  END IF
973 *
974  ELSE IF( lsamen( 2, c2, 'TB' ) ) THEN
975 *
976 * TB: triangular banded matrices
977 *
978  ntypes = 17
979  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
980 *
981  IF( tstchk ) THEN
982  CALL zchktb( 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, 'QR' ) ) THEN
990 *
991 * QR: QR factorization
992 *
993  ntypes = 8
994  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
995 *
996  IF( tstchk ) THEN
997  CALL zchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
998  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
999  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1000  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1001  $ work, rwork, iwork, nout )
1002  ELSE
1003  WRITE( nout, fmt = 9989 )path
1004  END IF
1005 *
1006  ELSE IF( lsamen( 2, c2, 'LQ' ) ) THEN
1007 *
1008 * LQ: LQ factorization
1009 *
1010  ntypes = 8
1011  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1012 *
1013  IF( tstchk ) THEN
1014  CALL zchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1015  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1016  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1017  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1018  $ work, rwork, nout )
1019  ELSE
1020  WRITE( nout, fmt = 9989 )path
1021  END IF
1022 *
1023  ELSE IF( lsamen( 2, c2, 'QL' ) ) THEN
1024 *
1025 * QL: QL factorization
1026 *
1027  ntypes = 8
1028  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1029 *
1030  IF( tstchk ) THEN
1031  CALL zchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1032  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1033  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1034  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1035  $ work, rwork, nout )
1036  ELSE
1037  WRITE( nout, fmt = 9989 )path
1038  END IF
1039 *
1040  ELSE IF( lsamen( 2, c2, 'RQ' ) ) THEN
1041 *
1042 * RQ: RQ factorization
1043 *
1044  ntypes = 8
1045  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1046 *
1047  IF( tstchk ) THEN
1048  CALL zchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1049  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1050  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1051  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1052  $ work, rwork, iwork, nout )
1053  ELSE
1054  WRITE( nout, fmt = 9989 )path
1055  END IF
1056 *
1057  ELSE IF( lsamen( 2, c2, 'EQ' ) ) THEN
1058 *
1059 * EQ: Equilibration routines for general and positive definite
1060 * matrices (THREQ should be between 2 and 10)
1061 *
1062  IF( tstchk ) THEN
1063  CALL zchkeq( threq, nout )
1064  ELSE
1065  WRITE( nout, fmt = 9989 )path
1066  END IF
1067 *
1068  ELSE IF( lsamen( 2, c2, 'TZ' ) ) THEN
1069 *
1070 * TZ: Trapezoidal matrix
1071 *
1072  ntypes = 3
1073  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1074 *
1075  IF( tstchk ) THEN
1076  CALL zchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
1077  $ a( 1, 1 ), a( 1, 2 ), s( 1 ),
1078  $ b( 1, 1 ), work, rwork, nout )
1079  ELSE
1080  WRITE( nout, fmt = 9989 )path
1081  END IF
1082 *
1083  ELSE IF( lsamen( 2, c2, 'QP' ) ) THEN
1084 *
1085 * QP: QR factorization with pivoting
1086 *
1087  ntypes = 6
1088  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1089 *
1090  IF( tstchk ) THEN
1091  CALL zchkq3( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1092  $ thresh, a( 1, 1 ), a( 1, 2 ), s( 1 ),
1093  $ b( 1, 1 ), work, rwork, iwork,
1094  $ nout )
1095  ELSE
1096  WRITE( nout, fmt = 9989 )path
1097  END IF
1098 *
1099  ELSE IF( lsamen( 2, c2, 'LS' ) ) THEN
1100 *
1101 * LS: Least squares drivers
1102 *
1103  ntypes = 6
1104  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1105 *
1106  IF( tstdrv ) THEN
1107  CALL zdrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
1108  $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
1109  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1110  $ s( 1 ), s( nmax+1 ), nout )
1111  ELSE
1112  WRITE( nout, fmt = 9989 )path
1113  END IF
1114 *
1115 *
1116  ELSE IF( lsamen( 2, c2, 'QT' ) ) THEN
1117 *
1118 * QT: QRT routines for general matrices
1119 *
1120  IF( tstchk ) THEN
1121  CALL zchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
1122  $ nbval, nout )
1123  ELSE
1124  WRITE( nout, fmt = 9989 )path
1125  END IF
1126 *
1127  ELSE IF( lsamen( 2, c2, 'QX' ) ) THEN
1128 *
1129 * QX: QRT routines for triangular-pentagonal matrices
1130 *
1131  IF( tstchk ) THEN
1132  CALL zchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1133  $ nbval, nout )
1134  ELSE
1135  WRITE( nout, fmt = 9989 )path
1136  END IF
1137 *
1138  ELSE IF( lsamen( 2, c2, 'TQ' ) ) THEN
1139 *
1140 * TQ: LQT routines for general matrices
1141 *
1142  IF( tstchk ) THEN
1143  CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1144  $ nbval, nout )
1145  ELSE
1146  WRITE( nout, fmt = 9989 )path
1147  END IF
1148 *
1149  ELSE IF( lsamen( 2, c2, 'XQ' ) ) THEN
1150 *
1151 * XQ: LQT routines for triangular-pentagonal matrices
1152 *
1153  IF( tstchk ) THEN
1154  CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1155  $ nbval, nout )
1156  ELSE
1157  WRITE( nout, fmt = 9989 )path
1158  END IF
1159 *
1160  ELSE IF( lsamen( 2, c2, 'TS' ) ) THEN
1161 *
1162 * TS: QR routines for tall-skinny matrices
1163 *
1164  IF( tstchk ) THEN
1165  CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1166  $ nbval, nout )
1167  ELSE
1168  WRITE( nout, fmt = 9989 )path
1169  END IF
1170 *
1171  ELSE IF( lsamen( 2, c2, 'TQ' ) ) THEN
1172 *
1173 * TQ: LQT routines for general matrices
1174 *
1175  IF( tstchk ) THEN
1176  CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1177  $ nbval, nout )
1178  ELSE
1179  WRITE( nout, fmt = 9989 )path
1180  END IF
1181 *
1182  ELSE IF( lsamen( 2, c2, 'XQ' ) ) THEN
1183 *
1184 * XQ: LQT routines for triangular-pentagonal matrices
1185 *
1186  IF( tstchk ) THEN
1187  CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1188  $ nbval, nout )
1189  ELSE
1190  WRITE( nout, fmt = 9989 )path
1191  END IF
1192 *
1193  ELSE IF( lsamen( 2, c2, 'TS' ) ) THEN
1194 *
1195 * TS: QR routines for tall-skinny matrices
1196 *
1197  IF( tstchk ) THEN
1198  CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1199  $ nbval, nout )
1200  ELSE
1201  WRITE( nout, fmt = 9989 )path
1202  END IF
1203 *
1204  ELSE IF( lsamen( 2, c2, 'HH' ) ) THEN
1205 *
1206 * HH: Householder reconstruction for tall-skinny matrices
1207 *
1208  IF( tstchk ) THEN
1209  CALL zchkunhr_col( thresh, tsterr, nm, mval, nn, nval, nnb,
1210  $ nbval, nout )
1211  ELSE
1212  WRITE( nout, fmt = 9989 ) path
1213  END IF
1214 *
1215  ELSE
1216 *
1217  WRITE( nout, fmt = 9990 )path
1218  END IF
1219 *
1220 * Go back to get another input line.
1221 *
1222  GO TO 80
1223 *
1224 * Branch to this line when the last record is read.
1225 *
1226  140 CONTINUE
1227  CLOSE ( nin )
1228  s2 = dsecnd( )
1229  WRITE( nout, fmt = 9998 )
1230  WRITE( nout, fmt = 9997 )s2 - s1
1231 *
1232  9999 FORMAT( / ' Execution not attempted due to input errors' )
1233  9998 FORMAT( / ' End of tests' )
1234  9997 FORMAT( ' Total time used = ', f12.2, ' seconds', / )
1235  9996 FORMAT( ' Invalid input value: ', a4, '=', i6, '; must be >=',
1236  $ i6 )
1237  9995 FORMAT( ' Invalid input value: ', a4, '=', i6, '; must be <=',
1238  $ i6 )
1239  9994 FORMAT( ' Tests of the COMPLEX*16 LAPACK routines ',
1240  $ / ' LAPACK VERSION ', i1, '.', i1, '.', i1,
1241  $ / / ' The following parameter values will be used:' )
1242  9993 FORMAT( 4x, a4, ': ', 10i6, / 11x, 10i6 )
1243  9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
1244  $ 'less than', f8.2, / )
1245  9991 FORMAT( ' Relative machine ', a, ' is taken to be', d16.6 )
1246  9990 FORMAT( / 1x, a3, ': Unrecognized path name' )
1247  9989 FORMAT( / 1x, a3, ' routines were not tested' )
1248  9988 FORMAT( / 1x, a3, ' driver routines were not tested' )
1249 *
1250 * End of ZCHKAA
1251 *
1252  END
double precision function dlamch(CMACH)
DLAMCH
Definition: dlamch.f:69
double precision function dsecnd()
DSECND Using ETIME
logical function lsamen(N, CA, CB)
LSAMEN
Definition: lsamen.f:74
logical function lsame(CA, CB)
LSAME
Definition: lsame.f:53
subroutine alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
Definition: alareq.f:90
subroutine zchktr(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTR
Definition: zchktr.f:163
subroutine zchklq(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AL, AC, B, X, XACT, TAU, WORK, RWORK, NOUT)
ZCHKLQ
Definition: zchklq.f:196
subroutine zdrvpb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPB
Definition: zdrvpb.f:159
subroutine zchkps(DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL, THRESH, TSTERR, NMAX, A, AFAC, PERM, PIV, WORK, RWORK, NOUT)
ZCHKPS
Definition: zchkps.f:154
subroutine zchksy_rk(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_RK
Definition: zchksy_rk.f:177
subroutine zdrvsy(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY
Definition: zdrvsy.f:153
subroutine zchktp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AP, AINVP, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTP
Definition: zchktp.f:151
program zchkaa
ZCHKAA
Definition: zchkaa.f:116
subroutine zdrvhp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHP
Definition: zdrvhp.f:157
subroutine zchksy_aa(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_AA
Definition: zchksy_aa.f:171
subroutine zdrvsy_rk(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_RK
Definition: zdrvsy_rk.f:158
subroutine zchkql(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AL, AC, B, X, XACT, TAU, WORK, RWORK, NOUT)
ZCHKQL
Definition: zchkql.f:196
subroutine zdrvpp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPP
Definition: zdrvpp.f:159
subroutine zdrvsp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSP
Definition: zdrvsp.f:157
subroutine zdrvge(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
ZDRVGE
Definition: zdrvge.f:164
subroutine zchkqrt(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKQRT
Definition: zchkqrt.f:101
subroutine zdrvpt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
ZDRVPT
Definition: zdrvpt.f:140
subroutine zchkpp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPP
Definition: zchkpp.f:159
subroutine zchkhe_rook(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_ROOK
Definition: zchkhe_rook.f:172
subroutine zchktz(DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A, COPYA, S, TAU, WORK, RWORK, NOUT)
ZCHKTZ
Definition: zchktz.f:137
subroutine zchkrq(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AR, AC, B, X, XACT, TAU, WORK, RWORK, IWORK, NOUT)
ZCHKRQ
Definition: zchkrq.f:201
subroutine zchkhe_aa(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_AA
Definition: zchkhe_aa.f:171
subroutine zchkgt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKGT
Definition: zchkgt.f:147
subroutine zdrvsy_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_AA
Definition: zdrvsy_aa.f:153
subroutine zdrvhe(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE
Definition: zdrvhe.f:153
subroutine zdrvgb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, LA, AFB, LAFB, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
ZDRVGB
Definition: zdrvgb.f:172
subroutine zchkhe_aa_2stage(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_AA_2STAGE
subroutine zchksy_rook(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_ROOK
Definition: zchksy_rook.f:172
subroutine zchkeq(THRESH, NOUT)
ZCHKEQ
Definition: zchkeq.f:54
subroutine zdrvhe_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_ROOK
Definition: zdrvhe_rook.f:153
subroutine zdrvsy_aa_2stage(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_AA_2STAGE
subroutine zchktb(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AB, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTB
Definition: zchktb.f:149
subroutine zdrvhe_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_AA
Definition: zdrvhe_aa.f:153
subroutine zchkhp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHP
Definition: zchkhp.f:164
subroutine zdrvls(DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB, NBVAL, NXVAL, THRESH, TSTERR, A, COPYA, B, COPYB, C, S, COPYS, NOUT)
ZDRVLS
Definition: zdrvls.f:192
subroutine zdrvpo(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPO
Definition: zdrvpo.f:159
subroutine zchkpt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPT
Definition: zchkpt.f:147
subroutine zchksy(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY
Definition: zchksy.f:171
subroutine zchkpb(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPB
Definition: zchkpb.f:168
subroutine zdrvsy_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_ROOK
Definition: zdrvsy_rook.f:153
subroutine zdrvgt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVGT
Definition: zdrvgt.f:139
subroutine zchkhe_rk(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_RK
Definition: zchkhe_rk.f:177
subroutine zchkunhr_col(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKUNHR_COL
Definition: zchkunhr_col.f:108
subroutine zdrvhe_rk(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_RK
Definition: zdrvhe_rk.f:158
subroutine zdrvhe_aa_2stage(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_AA_2STAGE
subroutine zchksy_aa_2stage(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY_AA_2STAGE
subroutine zchkqrtp(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKQRTP
Definition: zchkqrtp.f:102
subroutine zchkqr(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AR, AC, B, X, XACT, TAU, WORK, RWORK, IWORK, NOUT)
ZCHKQR
Definition: zchkqr.f:201
subroutine zchksp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSP
Definition: zchksp.f:164
subroutine zchkq3(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, THRESH, A, COPYA, S, TAU, WORK, RWORK, IWORK, NOUT)
ZCHKQ3
Definition: zchkq3.f:158
subroutine zchkpo(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPO
Definition: zchkpo.f:168
subroutine zchkge(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKGE
Definition: zchkge.f:186
subroutine zchkgb(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, A, LA, AFAC, LAFAC, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKGB
Definition: zchkgb.f:191
subroutine zchkhe(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE
Definition: zchkhe.f:171
subroutine zchktsqr(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKQRT
Definition: zchktsqr.f:102
subroutine zchklqt(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKLQT
Definition: zchklqt.f:102
subroutine zchklqtp(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKLQTP
Definition: zchklqtp.f:102
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
Definition: ilaver.f:51