LAPACK  3.9.1
LAPACK: Linear Algebra PACKage
dchkaa.f
Go to the documentation of this file.
1 *> \brief \b DCHKAA
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 DCHKAA
12 *
13 *
14 *> \par Purpose:
15 * =============
16 *>
17 *> \verbatim
18 *>
19 *> DCHKAA is the main test program for the DOUBLE PRECISION LAPACK
20 *> linear equation 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 40 lines:
28 *> Data file for testing DOUBLE PRECISION LAPACK linear eqn. 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 *> 20.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 *> DGE 11 List types on next line if 0 < NTYPES < 11
45 *> DGB 8 List types on next line if 0 < NTYPES < 8
46 *> DGT 12 List types on next line if 0 < NTYPES < 12
47 *> DPO 9 List types on next line if 0 < NTYPES < 9
48 *> DPS 9 List types on next line if 0 < NTYPES < 9
49 *> DPP 9 List types on next line if 0 < NTYPES < 9
50 *> DPB 8 List types on next line if 0 < NTYPES < 8
51 *> DPT 12 List types on next line if 0 < NTYPES < 12
52 *> DSY 10 List types on next line if 0 < NTYPES < 10
53 *> DSR 10 List types on next line if 0 < NTYPES < 10
54 *> DSK 10 List types on next line if 0 < NTYPES < 10
55 *> DSA 10 List types on next line if 0 < NTYPES < 10
56 *> DS2 10 List types on next line if 0 < NTYPES < 10
57 *> DSP 10 List types on next line if 0 < NTYPES < 10
58 *> DTR 18 List types on next line if 0 < NTYPES < 18
59 *> DTP 18 List types on next line if 0 < NTYPES < 18
60 *> DTB 17 List types on next line if 0 < NTYPES < 17
61 *> DQR 8 List types on next line if 0 < NTYPES < 8
62 *> DRQ 8 List types on next line if 0 < NTYPES < 8
63 *> DLQ 8 List types on next line if 0 < NTYPES < 8
64 *> DQL 8 List types on next line if 0 < NTYPES < 8
65 *> DQP 6 List types on next line if 0 < NTYPES < 6
66 *> DTZ 3 List types on next line if 0 < NTYPES < 3
67 *> DLS 6 List types on next line if 0 < NTYPES < 6
68 *> DEQ
69 *> DQT
70 *> DQX
71 *> DTQ
72 *> DXQ
73 *> DTS
74 *> DHH
75 *> \endverbatim
76 *
77 * Parameters:
78 * ==========
79 *
80 *> \verbatim
81 *> NMAX INTEGER
82 *> The maximum allowable value for M and N.
83 *>
84 *> MAXIN INTEGER
85 *> The number of different values that can be used for each of
86 *> M, N, NRHS, NB, NX and RANK
87 *>
88 *> MAXRHS INTEGER
89 *> The maximum number of right hand sides
90 *>
91 *> MATMAX INTEGER
92 *> The maximum number of matrix types to use for testing
93 *>
94 *> NIN INTEGER
95 *> The unit number for input
96 *>
97 *> NOUT INTEGER
98 *> The unit number for output
99 *> \endverbatim
100 *
101 * Authors:
102 * ========
103 *
104 *> \author Univ. of Tennessee
105 *> \author Univ. of California Berkeley
106 *> \author Univ. of Colorado Denver
107 *> \author NAG Ltd.
108 *
109 *> \ingroup double_lin
110 *
111 * =====================================================================
112  PROGRAM dchkaa
113 *
114 * -- LAPACK test routine --
115 * -- LAPACK is a software package provided by Univ. of Tennessee, --
116 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
117 * Novemebr 2019
118 *
119 * =====================================================================
120 *
121 * .. Parameters ..
122  INTEGER nmax
123  parameter( nmax = 132 )
124  INTEGER maxin
125  parameter( maxin = 12 )
126  INTEGER maxrhs
127  parameter( maxrhs = 16 )
128  INTEGER matmax
129  parameter( matmax = 30 )
130  INTEGER nin, nout
131  parameter( nin = 5, nout = 6 )
132  INTEGER kdmax
133  parameter( kdmax = nmax+( nmax+1 ) / 4 )
134 * ..
135 * .. Local Scalars ..
136  LOGICAL fatal, tstchk, tstdrv, tsterr
137  CHARACTER c1
138  CHARACTER*2 c2
139  CHARACTER*3 path
140  CHARACTER*10 intstr
141  CHARACTER*72 aline
142  INTEGER i, ic, j, k, la, lafac, lda, nb, nm, nmats, nn,
143  $ nnb, nnb2, nns, nrhs, ntypes, nrank,
144  $ vers_major, vers_minor, vers_patch
145  DOUBLE PRECISION eps, s1, s2, threq, thresh
146 * ..
147 * .. Local Arrays ..
148  LOGICAL dotype( matmax )
149  INTEGER iwork( 25*nmax ), mval( maxin ),
150  $ nbval( maxin ), nbval2( maxin ),
151  $ nsval( maxin ), nval( maxin ), nxval( maxin ),
152  $ rankval( maxin ), piv( nmax )
153  DOUBLE PRECISION a( ( kdmax+1 )*nmax, 7 ), b( nmax*maxrhs, 4 ),
154  $ e( nmax ), rwork( 5*nmax+2*maxrhs ),
155  $ s( 2*nmax ), work( nmax, 3*nmax+maxrhs+30 )
156 * ..
157 * .. External Functions ..
158  LOGICAL lsame, lsamen
159  DOUBLE PRECISION dlamch, dsecnd
160  EXTERNAL lsame, lsamen, dlamch, dsecnd
161 * ..
162 * .. External Subroutines ..
163  EXTERNAL alareq, dchkeq, dchkgb, dchkge, dchkgt, dchklq,
171  $ dchklqt,dchktsqr
172 * ..
173 * .. Scalars in Common ..
174  LOGICAL lerr, ok
175  CHARACTER*32 srnamt
176  INTEGER infot, nunit
177 * ..
178 * .. Arrays in Common ..
179  INTEGER iparms( 100 )
180 * ..
181 * .. Common blocks ..
182  COMMON / infoc / infot, nunit, ok, lerr
183  COMMON / srnamc / srnamt
184  COMMON / claenv / iparms
185 * ..
186 * .. Data statements ..
187  DATA threq / 2.0d0 / , intstr / '0123456789' /
188 * ..
189 * .. Executable Statements ..
190 *
191  s1 = dsecnd( )
192  lda = nmax
193  fatal = .false.
194 *
195 * Read a dummy line.
196 *
197  READ( nin, fmt = * )
198 *
199 * Report values of parameters.
200 *
201  CALL ilaver( vers_major, vers_minor, vers_patch )
202  WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
203 *
204 * Read the values of M
205 *
206  READ( nin, fmt = * )nm
207  IF( nm.LT.1 ) THEN
208  WRITE( nout, fmt = 9996 )' NM ', nm, 1
209  nm = 0
210  fatal = .true.
211  ELSE IF( nm.GT.maxin ) THEN
212  WRITE( nout, fmt = 9995 )' NM ', nm, maxin
213  nm = 0
214  fatal = .true.
215  END IF
216  READ( nin, fmt = * )( mval( i ), i = 1, nm )
217  DO 10 i = 1, nm
218  IF( mval( i ).LT.0 ) THEN
219  WRITE( nout, fmt = 9996 )' M ', mval( i ), 0
220  fatal = .true.
221  ELSE IF( mval( i ).GT.nmax ) THEN
222  WRITE( nout, fmt = 9995 )' M ', mval( i ), nmax
223  fatal = .true.
224  END IF
225  10 CONTINUE
226  IF( nm.GT.0 )
227  $ WRITE( nout, fmt = 9993 )'M ', ( mval( i ), i = 1, nm )
228 *
229 * Read the values of N
230 *
231  READ( nin, fmt = * )nn
232  IF( nn.LT.1 ) THEN
233  WRITE( nout, fmt = 9996 )' NN ', nn, 1
234  nn = 0
235  fatal = .true.
236  ELSE IF( nn.GT.maxin ) THEN
237  WRITE( nout, fmt = 9995 )' NN ', nn, maxin
238  nn = 0
239  fatal = .true.
240  END IF
241  READ( nin, fmt = * )( nval( i ), i = 1, nn )
242  DO 20 i = 1, nn
243  IF( nval( i ).LT.0 ) THEN
244  WRITE( nout, fmt = 9996 )' N ', nval( i ), 0
245  fatal = .true.
246  ELSE IF( nval( i ).GT.nmax ) THEN
247  WRITE( nout, fmt = 9995 )' N ', nval( i ), nmax
248  fatal = .true.
249  END IF
250  20 CONTINUE
251  IF( nn.GT.0 )
252  $ WRITE( nout, fmt = 9993 )'N ', ( nval( i ), i = 1, nn )
253 *
254 * Read the values of NRHS
255 *
256  READ( nin, fmt = * )nns
257  IF( nns.LT.1 ) THEN
258  WRITE( nout, fmt = 9996 )' NNS', nns, 1
259  nns = 0
260  fatal = .true.
261  ELSE IF( nns.GT.maxin ) THEN
262  WRITE( nout, fmt = 9995 )' NNS', nns, maxin
263  nns = 0
264  fatal = .true.
265  END IF
266  READ( nin, fmt = * )( nsval( i ), i = 1, nns )
267  DO 30 i = 1, nns
268  IF( nsval( i ).LT.0 ) THEN
269  WRITE( nout, fmt = 9996 )'NRHS', nsval( i ), 0
270  fatal = .true.
271  ELSE IF( nsval( i ).GT.maxrhs ) THEN
272  WRITE( nout, fmt = 9995 )'NRHS', nsval( i ), maxrhs
273  fatal = .true.
274  END IF
275  30 CONTINUE
276  IF( nns.GT.0 )
277  $ WRITE( nout, fmt = 9993 )'NRHS', ( nsval( i ), i = 1, nns )
278 *
279 * Read the values of NB
280 *
281  READ( nin, fmt = * )nnb
282  IF( nnb.LT.1 ) THEN
283  WRITE( nout, fmt = 9996 )'NNB ', nnb, 1
284  nnb = 0
285  fatal = .true.
286  ELSE IF( nnb.GT.maxin ) THEN
287  WRITE( nout, fmt = 9995 )'NNB ', nnb, maxin
288  nnb = 0
289  fatal = .true.
290  END IF
291  READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
292  DO 40 i = 1, nnb
293  IF( nbval( i ).LT.0 ) THEN
294  WRITE( nout, fmt = 9996 )' NB ', nbval( i ), 0
295  fatal = .true.
296  END IF
297  40 CONTINUE
298  IF( nnb.GT.0 )
299  $ WRITE( nout, fmt = 9993 )'NB ', ( nbval( i ), i = 1, nnb )
300 *
301 * Set NBVAL2 to be the set of unique values of NB
302 *
303  nnb2 = 0
304  DO 60 i = 1, nnb
305  nb = nbval( i )
306  DO 50 j = 1, nnb2
307  IF( nb.EQ.nbval2( j ) )
308  $ GO TO 60
309  50 CONTINUE
310  nnb2 = nnb2 + 1
311  nbval2( nnb2 ) = nb
312  60 CONTINUE
313 *
314 * Read the values of NX
315 *
316  READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
317  DO 70 i = 1, nnb
318  IF( nxval( i ).LT.0 ) THEN
319  WRITE( nout, fmt = 9996 )' NX ', nxval( i ), 0
320  fatal = .true.
321  END IF
322  70 CONTINUE
323  IF( nnb.GT.0 )
324  $ WRITE( nout, fmt = 9993 )'NX ', ( nxval( i ), i = 1, nnb )
325 *
326 * Read the values of RANKVAL
327 *
328  READ( nin, fmt = * )nrank
329  IF( nn.LT.1 ) THEN
330  WRITE( nout, fmt = 9996 )' NRANK ', nrank, 1
331  nrank = 0
332  fatal = .true.
333  ELSE IF( nn.GT.maxin ) THEN
334  WRITE( nout, fmt = 9995 )' NRANK ', nrank, maxin
335  nrank = 0
336  fatal = .true.
337  END IF
338  READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
339  DO i = 1, nrank
340  IF( rankval( i ).LT.0 ) THEN
341  WRITE( nout, fmt = 9996 )' RANK ', rankval( i ), 0
342  fatal = .true.
343  ELSE IF( rankval( i ).GT.100 ) THEN
344  WRITE( nout, fmt = 9995 )' RANK ', rankval( i ), 100
345  fatal = .true.
346  END IF
347  END DO
348  IF( nrank.GT.0 )
349  $ WRITE( nout, fmt = 9993 )'RANK % OF N',
350  $ ( rankval( i ), i = 1, nrank )
351 *
352 * Read the threshold value for the test ratios.
353 *
354  READ( nin, fmt = * )thresh
355  WRITE( nout, fmt = 9992 )thresh
356 *
357 * Read the flag that indicates whether to test the LAPACK routines.
358 *
359  READ( nin, fmt = * )tstchk
360 *
361 * Read the flag that indicates whether to test the driver routines.
362 *
363  READ( nin, fmt = * )tstdrv
364 *
365 * Read the flag that indicates whether to test the error exits.
366 *
367  READ( nin, fmt = * )tsterr
368 *
369  IF( fatal ) THEN
370  WRITE( nout, fmt = 9999 )
371  stop
372  END IF
373 *
374 * Calculate and print the machine dependent constants.
375 *
376  eps = dlamch( 'Underflow threshold' )
377  WRITE( nout, fmt = 9991 )'underflow', eps
378  eps = dlamch( 'Overflow threshold' )
379  WRITE( nout, fmt = 9991 )'overflow ', eps
380  eps = dlamch( 'Epsilon' )
381  WRITE( nout, fmt = 9991 )'precision', eps
382  WRITE( nout, fmt = * )
383 *
384  80 CONTINUE
385 *
386 * Read a test path and the number of matrix types to use.
387 *
388  READ( nin, fmt = '(A72)', END = 140 )aline
389  path = aline( 1: 3 )
390  nmats = matmax
391  i = 3
392  90 CONTINUE
393  i = i + 1
394  IF( i.GT.72 ) THEN
395  nmats = matmax
396  GO TO 130
397  END IF
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  nrhs = nsval( 1 )
420 *
421 * Check first character for correct precision.
422 *
423  IF( .NOT.lsame( c1, 'Double precision' ) ) THEN
424  WRITE( nout, fmt = 9990 )path
425 *
426  ELSE IF( nmats.LE.0 ) THEN
427 *
428 * Check for a positive number of tests requested.
429 *
430  WRITE( nout, fmt = 9989 )path
431 *
432  ELSE IF( lsamen( 2, c2, 'GE' ) ) THEN
433 *
434 * GE: general matrices
435 *
436  ntypes = 11
437  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
438 *
439  IF( tstchk ) THEN
440  CALL dchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
441  $ nsval, thresh, tsterr, lda, a( 1, 1 ),
442  $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
443  $ b( 1, 3 ), work, rwork, iwork, nout )
444  ELSE
445  WRITE( nout, fmt = 9989 )path
446  END IF
447 *
448  IF( tstdrv ) THEN
449  CALL ddrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
450  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
451  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
452  $ rwork, iwork, nout )
453  ELSE
454  WRITE( nout, fmt = 9988 )path
455  END IF
456 *
457  ELSE IF( lsamen( 2, c2, 'GB' ) ) THEN
458 *
459 * GB: general banded matrices
460 *
461  la = ( 2*kdmax+1 )*nmax
462  lafac = ( 3*kdmax+1 )*nmax
463  ntypes = 8
464  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
465 *
466  IF( tstchk ) THEN
467  CALL dchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
468  $ nsval, thresh, tsterr, a( 1, 1 ), la,
469  $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
470  $ b( 1, 3 ), work, rwork, iwork, nout )
471  ELSE
472  WRITE( nout, fmt = 9989 )path
473  END IF
474 *
475  IF( tstdrv ) THEN
476  CALL ddrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
477  $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
478  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
479  $ work, rwork, iwork, nout )
480  ELSE
481  WRITE( nout, fmt = 9988 )path
482  END IF
483 *
484  ELSE IF( lsamen( 2, c2, 'GT' ) ) THEN
485 *
486 * GT: general tridiagonal matrices
487 *
488  ntypes = 12
489  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
490 *
491  IF( tstchk ) THEN
492  CALL dchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
493  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
494  $ b( 1, 3 ), work, rwork, iwork, nout )
495  ELSE
496  WRITE( nout, fmt = 9989 )path
497  END IF
498 *
499  IF( tstdrv ) THEN
500  CALL ddrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
501  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
502  $ b( 1, 3 ), work, rwork, iwork, nout )
503  ELSE
504  WRITE( nout, fmt = 9988 )path
505  END IF
506 *
507  ELSE IF( lsamen( 2, c2, 'PO' ) ) THEN
508 *
509 * PO: positive definite matrices
510 *
511  ntypes = 9
512  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
513 *
514  IF( tstchk ) THEN
515  CALL dchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
516  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
517  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
518  $ work, rwork, iwork, nout )
519  ELSE
520  WRITE( nout, fmt = 9989 )path
521  END IF
522 *
523  IF( tstdrv ) THEN
524  CALL ddrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
525  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
526  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
527  $ rwork, iwork, nout )
528  ELSE
529  WRITE( nout, fmt = 9988 )path
530  END IF
531 *
532  ELSE IF( lsamen( 2, c2, 'PS' ) ) THEN
533 *
534 * PS: positive semi-definite matrices
535 *
536  ntypes = 9
537 *
538  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
539 *
540  IF( tstchk ) THEN
541  CALL dchkps( dotype, nn, nval, nnb2, nbval2, nrank,
542  $ rankval, thresh, tsterr, lda, a( 1, 1 ),
543  $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
544  $ nout )
545  ELSE
546  WRITE( nout, fmt = 9989 )path
547  END IF
548 *
549  ELSE IF( lsamen( 2, c2, 'PP' ) ) THEN
550 *
551 * PP: positive definite packed matrices
552 *
553  ntypes = 9
554  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
555 *
556  IF( tstchk ) THEN
557  CALL dchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
558  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
559  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
560  $ iwork, nout )
561  ELSE
562  WRITE( nout, fmt = 9989 )path
563  END IF
564 *
565  IF( tstdrv ) THEN
566  CALL ddrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
567  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
568  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
569  $ rwork, iwork, nout )
570  ELSE
571  WRITE( nout, fmt = 9988 )path
572  END IF
573 *
574  ELSE IF( lsamen( 2, c2, 'PB' ) ) THEN
575 *
576 * PB: positive definite banded matrices
577 *
578  ntypes = 8
579  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
580 *
581  IF( tstchk ) THEN
582  CALL dchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
583  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
584  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
585  $ work, rwork, iwork, nout )
586  ELSE
587  WRITE( nout, fmt = 9989 )path
588  END IF
589 *
590  IF( tstdrv ) THEN
591  CALL ddrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
592  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
593  $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
594  $ rwork, iwork, nout )
595  ELSE
596  WRITE( nout, fmt = 9988 )path
597  END IF
598 *
599  ELSE IF( lsamen( 2, c2, 'PT' ) ) THEN
600 *
601 * PT: positive definite tridiagonal matrices
602 *
603  ntypes = 12
604  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
605 *
606  IF( tstchk ) THEN
607  CALL dchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
608  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
609  $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
610  ELSE
611  WRITE( nout, fmt = 9989 )path
612  END IF
613 *
614  IF( tstdrv ) THEN
615  CALL ddrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
616  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
617  $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
618  ELSE
619  WRITE( nout, fmt = 9988 )path
620  END IF
621 *
622  ELSE IF( lsamen( 2, c2, 'SY' ) ) THEN
623 *
624 * SY: symmetric indefinite matrices,
625 * with partial (Bunch-Kaufman) pivoting algorithm
626 *
627  ntypes = 10
628  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
629 *
630  IF( tstchk ) THEN
631  CALL dchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
632  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
633  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
634  $ work, rwork, iwork, nout )
635  ELSE
636  WRITE( nout, fmt = 9989 )path
637  END IF
638 *
639  IF( tstdrv ) THEN
640  CALL ddrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
641  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
642  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
643  $ nout )
644  ELSE
645  WRITE( nout, fmt = 9988 )path
646  END IF
647 *
648  ELSE IF( lsamen( 2, c2, 'SR' ) ) THEN
649 *
650 * SR: symmetric indefinite matrices,
651 * with bounded Bunch-Kaufman (rook) pivoting algorithm
652 *
653  ntypes = 10
654  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
655 *
656  IF( tstchk ) THEN
657  CALL dchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
658  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
659  $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
660  $ work, rwork, iwork, nout )
661  ELSE
662  WRITE( nout, fmt = 9989 )path
663  END IF
664 *
665  IF( tstdrv ) THEN
666  CALL ddrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
667  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
668  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
669  $ work, rwork, iwork, nout )
670  ELSE
671  WRITE( nout, fmt = 9988 )path
672  END IF
673 *
674  ELSE IF( lsamen( 2, c2, 'SK' ) ) THEN
675 *
676 * SK: symmetric indefinite matrices,
677 * with bounded Bunch-Kaufman (rook) pivoting algorithm,
678 * different matrix storage format than SR path version.
679 *
680  ntypes = 10
681  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
682 *
683  IF( tstchk ) THEN
684  CALL dchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
685  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
686  $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
687  $ b( 1, 3 ), work, rwork, iwork, nout )
688  ELSE
689  WRITE( nout, fmt = 9989 )path
690  END IF
691 *
692  IF( tstdrv ) THEN
693  CALL ddrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
694  $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
695  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
696  $ work, rwork, iwork, nout )
697  ELSE
698  WRITE( nout, fmt = 9988 )path
699  END IF
700 *
701  ELSE IF( lsamen( 2, c2, 'SA' ) ) THEN
702 *
703 * SA: symmetric indefinite matrices,
704 * with partial (Aasen's) pivoting algorithm
705 *
706  ntypes = 10
707  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
708 *
709  IF( tstchk ) THEN
710  CALL dchksy_aa( dotype, nn, nval, nnb2, nbval2, nns,
711  $ nsval, thresh, tsterr, lda,
712  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
713  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
714  $ work, rwork, iwork, nout )
715  ELSE
716  WRITE( nout, fmt = 9989 )path
717  END IF
718 *
719  IF( tstdrv ) THEN
720  CALL ddrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
721  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
722  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
723  $ work, rwork, iwork, nout )
724  ELSE
725  WRITE( nout, fmt = 9988 )path
726  END IF
727 *
728 *
729  ELSE IF( lsamen( 2, c2, 'S2' ) ) THEN
730 *
731 * SA: symmetric indefinite matrices,
732 * with partial (Aasen's) pivoting algorithm
733 *
734  ntypes = 10
735  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
736 *
737  IF( tstchk ) THEN
738  CALL dchksy_aa_2stage( dotype, nn, nval, nnb2, nbval2,
739  $ nns, nsval, thresh, tsterr, lda,
740  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
741  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
742  $ work, rwork, iwork, nout )
743  ELSE
744  WRITE( nout, fmt = 9989 )path
745  END IF
746 *
747  IF( tstdrv ) THEN
748  CALL ddrvsy_aa_2stage(
749  $ dotype, nn, nval, nrhs, thresh, tsterr,
750  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
751  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
752  $ work, rwork, iwork, nout )
753  ELSE
754  WRITE( nout, fmt = 9988 )path
755  END IF
756 *
757 *
758  ELSE IF( lsamen( 2, c2, 'SP' ) ) THEN
759 *
760 * SP: symmetric indefinite packed matrices,
761 * with partial (Bunch-Kaufman) pivoting algorithm
762 *
763  ntypes = 10
764  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
765 *
766  IF( tstchk ) THEN
767  CALL dchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
768  $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
769  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
770  $ iwork, nout )
771  ELSE
772  WRITE( nout, fmt = 9989 )path
773  END IF
774 *
775  IF( tstdrv ) THEN
776  CALL ddrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
777  $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
778  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
779  $ nout )
780  ELSE
781  WRITE( nout, fmt = 9988 )path
782  END IF
783 *
784  ELSE IF( lsamen( 2, c2, 'TR' ) ) THEN
785 *
786 * TR: triangular matrices
787 *
788  ntypes = 18
789  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
790 *
791  IF( tstchk ) THEN
792  CALL dchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
793  $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
794  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
795  $ iwork, nout )
796  ELSE
797  WRITE( nout, fmt = 9989 )path
798  END IF
799 *
800  ELSE IF( lsamen( 2, c2, 'TP' ) ) THEN
801 *
802 * TP: triangular packed matrices
803 *
804  ntypes = 18
805  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
806 *
807  IF( tstchk ) THEN
808  CALL dchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
809  $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
810  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
811  $ nout )
812  ELSE
813  WRITE( nout, fmt = 9989 )path
814  END IF
815 *
816  ELSE IF( lsamen( 2, c2, 'TB' ) ) THEN
817 *
818 * TB: triangular banded matrices
819 *
820  ntypes = 17
821  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
822 *
823  IF( tstchk ) THEN
824  CALL dchktb( dotype, nn, nval, nns, nsval, thresh, tsterr,
825  $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
826  $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
827  $ nout )
828  ELSE
829  WRITE( nout, fmt = 9989 )path
830  END IF
831 *
832  ELSE IF( lsamen( 2, c2, 'QR' ) ) THEN
833 *
834 * QR: QR factorization
835 *
836  ntypes = 8
837  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
838 *
839  IF( tstchk ) THEN
840  CALL dchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
841  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
842  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
843  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
844  $ work, rwork, iwork, nout )
845  ELSE
846  WRITE( nout, fmt = 9989 )path
847  END IF
848 *
849  ELSE IF( lsamen( 2, c2, 'LQ' ) ) THEN
850 *
851 * LQ: LQ factorization
852 *
853  ntypes = 8
854  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
855 *
856  IF( tstchk ) THEN
857  CALL dchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
858  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
859  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
860  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
861  $ work, rwork, nout )
862  ELSE
863  WRITE( nout, fmt = 9989 )path
864  END IF
865 *
866  ELSE IF( lsamen( 2, c2, 'QL' ) ) THEN
867 *
868 * QL: QL factorization
869 *
870  ntypes = 8
871  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
872 *
873  IF( tstchk ) THEN
874  CALL dchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
875  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
876  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
877  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
878  $ work, rwork, nout )
879  ELSE
880  WRITE( nout, fmt = 9989 )path
881  END IF
882 *
883  ELSE IF( lsamen( 2, c2, 'RQ' ) ) THEN
884 *
885 * RQ: RQ factorization
886 *
887  ntypes = 8
888  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
889 *
890  IF( tstchk ) THEN
891  CALL dchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
892  $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
893  $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
894  $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
895  $ work, rwork, iwork, nout )
896  ELSE
897  WRITE( nout, fmt = 9989 )path
898  END IF
899 *
900  ELSE IF( lsamen( 2, c2, 'QP' ) ) THEN
901 *
902 * QP: QR factorization with pivoting
903 *
904  ntypes = 6
905  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
906 *
907  IF( tstchk ) THEN
908  CALL dchkq3( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
909  $ thresh, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
910  $ b( 1, 3 ), work, iwork, nout )
911  ELSE
912  WRITE( nout, fmt = 9989 )path
913  END IF
914 *
915  ELSE IF( lsamen( 2, c2, 'TZ' ) ) THEN
916 *
917 * TZ: Trapezoidal matrix
918 *
919  ntypes = 3
920  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
921 *
922  IF( tstchk ) THEN
923  CALL dchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
924  $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
925  $ b( 1, 3 ), work, nout )
926  ELSE
927  WRITE( nout, fmt = 9989 )path
928  END IF
929 *
930  ELSE IF( lsamen( 2, c2, 'LS' ) ) THEN
931 *
932 * LS: Least squares drivers
933 *
934  ntypes = 6
935  CALL alareq( path, nmats, dotype, ntypes, nin, nout )
936 *
937  IF( tstdrv ) THEN
938  CALL ddrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
939  $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
940  $ a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
941  $ rwork, rwork( nmax+1 ), nout )
942  ELSE
943  WRITE( nout, fmt = 9988 )path
944  END IF
945 *
946  ELSE IF( lsamen( 2, c2, 'EQ' ) ) THEN
947 *
948 * EQ: Equilibration routines for general and positive definite
949 * matrices (THREQ should be between 2 and 10)
950 *
951  IF( tstchk ) THEN
952  CALL dchkeq( threq, nout )
953  ELSE
954  WRITE( nout, fmt = 9989 )path
955  END IF
956 *
957  ELSE IF( lsamen( 2, c2, 'QT' ) ) THEN
958 *
959 * QT: QRT routines for general matrices
960 *
961  IF( tstchk ) THEN
962  CALL dchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
963  $ nbval, nout )
964  ELSE
965  WRITE( nout, fmt = 9989 )path
966  END IF
967 *
968  ELSE IF( lsamen( 2, c2, 'QX' ) ) THEN
969 *
970 * QX: QRT routines for triangular-pentagonal matrices
971 *
972  IF( tstchk ) THEN
973  CALL dchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
974  $ nbval, nout )
975  ELSE
976  WRITE( nout, fmt = 9989 )path
977  END IF
978 *
979  ELSE IF( lsamen( 2, c2, 'TQ' ) ) THEN
980 *
981 * TQ: LQT routines for general matrices
982 *
983  IF( tstchk ) THEN
984  CALL dchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
985  $ nbval, nout )
986  ELSE
987  WRITE( nout, fmt = 9989 )path
988  END IF
989 *
990  ELSE IF( lsamen( 2, c2, 'XQ' ) ) THEN
991 *
992 * XQ: LQT routines for triangular-pentagonal matrices
993 *
994  IF( tstchk ) THEN
995  CALL dchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
996  $ nbval, nout )
997  ELSE
998  WRITE( nout, fmt = 9989 )path
999  END IF
1000 *
1001  ELSE IF( lsamen( 2, c2, 'TS' ) ) THEN
1002 *
1003 * TS: QR routines for tall-skinny matrices
1004 *
1005  IF( tstchk ) THEN
1006  CALL dchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1007  $ nbval, nout )
1008  ELSE
1009  WRITE( nout, fmt = 9989 )path
1010  END IF
1011 *
1012  ELSE IF( lsamen( 2, c2, 'HH' ) ) THEN
1013 *
1014 * HH: Householder reconstruction for tall-skinny matrices
1015 *
1016  IF( tstchk ) THEN
1017  CALL dchkorhr_col( thresh, tsterr, nm, mval, nn, nval, nnb,
1018  $ nbval, nout )
1019  ELSE
1020  WRITE( nout, fmt = 9989 ) path
1021  END IF
1022 *
1023  ELSE
1024 
1025 *
1026  WRITE( nout, fmt = 9990 )path
1027  END IF
1028 *
1029 * Go back to get another input line.
1030 *
1031  GO TO 80
1032 *
1033 * Branch to this line when the last record is read.
1034 *
1035  140 CONTINUE
1036  CLOSE ( nin )
1037  s2 = dsecnd( )
1038  WRITE( nout, fmt = 9998 )
1039  WRITE( nout, fmt = 9997 )s2 - s1
1040 *
1041  9999 FORMAT( / ' Execution not attempted due to input errors' )
1042  9998 FORMAT( / ' End of tests' )
1043  9997 FORMAT( ' Total time used = ', f12.2, ' seconds', / )
1044  9996 FORMAT( ' Invalid input value: ', a4, '=', i6, '; must be >=',
1045  $ i6 )
1046  9995 FORMAT( ' Invalid input value: ', a4, '=', i6, '; must be <=',
1047  $ i6 )
1048  9994 FORMAT( ' Tests of the DOUBLE PRECISION LAPACK routines ',
1049  $ / ' LAPACK VERSION ', i1, '.', i1, '.', i1,
1050  $ / / ' The following parameter values will be used:' )
1051  9993 FORMAT( 4x, a4, ': ', 10i6, / 11x, 10i6 )
1052  9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
1053  $ 'less than', f8.2, / )
1054  9991 FORMAT( ' Relative machine ', a, ' is taken to be', d16.6 )
1055  9990 FORMAT( / 1x, a3, ': Unrecognized path name' )
1056  9989 FORMAT( / 1x, a3, ' routines were not tested' )
1057  9988 FORMAT( / 1x, a3, ' driver routines were not tested' )
1058 *
1059 * End of DCHKAA
1060 *
1061  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 dchksy_aa_2stage(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSY_AA_2STAGE
subroutine ddrvgt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVGT
Definition: ddrvgt.f:139
subroutine ddrvsy_rk(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVSY_RK
Definition: ddrvsy_rk.f:156
subroutine ddrvpp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
DDRVPP
Definition: ddrvpp.f:167
subroutine ddrvpt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
DDRVPT
Definition: ddrvpt.f:140
subroutine dchkpt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
DCHKPT
Definition: dchkpt.f:146
subroutine ddrvsp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVSP
Definition: ddrvsp.f:156
subroutine dchklqt(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKLQT
Definition: dchklqt.f:102
subroutine ddrvsy_aa_2stage(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVSY_AA_2STAGE
subroutine ddrvls(DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB, NBVAL, NXVAL, THRESH, TSTERR, A, COPYA, B, COPYB, C, S, COPYS, NOUT)
DDRVLS
Definition: ddrvls.f:192
subroutine dchkqrt(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKQRT
Definition: dchkqrt.f:102
subroutine dchkpp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKPP
Definition: dchkpp.f:163
subroutine dchkpb(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKPB
Definition: dchkpb.f:172
subroutine dchklqtp(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKLQTP
Definition: dchklqtp.f:102
subroutine ddrvpo(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
DDRVPO
Definition: ddrvpo.f:164
subroutine dchkrq(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)
DCHKRQ
Definition: dchkrq.f:201
subroutine dchktz(DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A, COPYA, S, TAU, WORK, NOUT)
DCHKTZ
Definition: dchktz.f:132
subroutine dchkq3(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, THRESH, A, COPYA, S, TAU, WORK, IWORK, NOUT)
DCHKQ3
Definition: dchkq3.f:153
subroutine dchktb(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AB, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKTB
Definition: dchktb.f:155
subroutine dchkeq(THRESH, NOUT)
DCHKEQ
Definition: dchkeq.f:54
subroutine dchkge(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKGE
Definition: dchkge.f:185
subroutine dchkps(DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL, THRESH, TSTERR, NMAX, A, AFAC, PERM, PIV, WORK, RWORK, NOUT)
DCHKPS
Definition: dchkps.f:154
subroutine dchksy_rook(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSY_ROOK
Definition: dchksy_rook.f:171
subroutine dchktp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AP, AINVP, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKTP
Definition: dchktp.f:157
subroutine dchksy_rk(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSY_RK
Definition: dchksy_rk.f:176
subroutine ddrvgb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, LA, AFB, LAFB, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
DDRVGB
Definition: ddrvgb.f:172
subroutine dchklq(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AL, AC, B, X, XACT, TAU, WORK, RWORK, NOUT)
DCHKLQ
Definition: dchklq.f:196
subroutine dchkqr(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)
DCHKQR
Definition: dchkqr.f:201
subroutine dchksp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSP
Definition: dchksp.f:163
subroutine dchksy_aa(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSY_AA
Definition: dchksy_aa.f:170
subroutine dchktr(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKTR
Definition: dchktr.f:167
subroutine ddrvsy_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVSY_AA
Definition: ddrvsy_aa.f:152
subroutine ddrvsy_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVSY_ROOK
Definition: ddrvsy_rook.f:152
subroutine ddrvpb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
DDRVPB
Definition: ddrvpb.f:164
subroutine dchktsqr(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKQRT
Definition: dchktsqr.f:102
program dchkaa
DCHKAA
Definition: dchkaa.f:112
subroutine dchkgt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKGT
Definition: dchkgt.f:146
subroutine dchkgb(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, A, LA, AFAC, LAFAC, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKGB
Definition: dchkgb.f:191
subroutine ddrvge(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
DDRVGE
Definition: ddrvge.f:164
subroutine dchkqrtp(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKQRTP
Definition: dchkqrtp.f:102
subroutine dchksy(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSY
Definition: dchksy.f:170
subroutine ddrvsy(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVSY
Definition: ddrvsy.f:152
subroutine dchkorhr_col(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKORHR_COL
Definition: dchkorhr_col.f:108
subroutine dchkpo(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKPO
Definition: dchkpo.f:172
subroutine dchkql(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AL, AC, B, X, XACT, TAU, WORK, RWORK, NOUT)
DCHKQL
Definition: dchkql.f:196
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
Definition: ilaver.f:51