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