LAPACK  3.9.1
LAPACK: Linear Algebra PACKage
zchkec.f
Go to the documentation of this file.
1 *> \brief \b ZCHKEC
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 * Definition:
9 * ===========
10 *
11 * SUBROUTINE ZCHKEC( THRESH, TSTERR, NIN, NOUT )
12 *
13 * .. Scalar Arguments ..
14 * LOGICAL TSTERR
15 * INTEGER NIN, NOUT
16 * DOUBLE PRECISION THRESH
17 * ..
18 *
19 *
20 *> \par Purpose:
21 * =============
22 *>
23 *> \verbatim
24 *>
25 *> ZCHKEC tests eigen- condition estimation routines
26 *> ZTRSYL, CTREXC, CTRSNA, CTRSEN
27 *>
28 *> In all cases, the routine runs through a fixed set of numerical
29 *> examples, subjects them to various tests, and compares the test
30 *> results to a threshold THRESH. In addition, ZTRSNA and CTRSEN are
31 *> tested by reading in precomputed examples from a file (on input unit
32 *> NIN). Output is written to output unit NOUT.
33 *> \endverbatim
34 *
35 * Arguments:
36 * ==========
37 *
38 *> \param[in] THRESH
39 *> \verbatim
40 *> THRESH is DOUBLE PRECISION
41 *> Threshold for residual tests. A computed test ratio passes
42 *> the threshold if it is less than THRESH.
43 *> \endverbatim
44 *>
45 *> \param[in] TSTERR
46 *> \verbatim
47 *> TSTERR is LOGICAL
48 *> Flag that indicates whether error exits are to be tested.
49 *> \endverbatim
50 *>
51 *> \param[in] NIN
52 *> \verbatim
53 *> NIN is INTEGER
54 *> The logical unit number for input.
55 *> \endverbatim
56 *>
57 *> \param[in] NOUT
58 *> \verbatim
59 *> NOUT is INTEGER
60 *> The logical unit number for output.
61 *> \endverbatim
62 *
63 * Authors:
64 * ========
65 *
66 *> \author Univ. of Tennessee
67 *> \author Univ. of California Berkeley
68 *> \author Univ. of Colorado Denver
69 *> \author NAG Ltd.
70 *
71 *> \ingroup complex16_eig
72 *
73 * =====================================================================
74  SUBROUTINE zchkec( THRESH, TSTERR, NIN, NOUT )
75 *
76 * -- LAPACK test routine --
77 * -- LAPACK is a software package provided by Univ. of Tennessee, --
78 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
79 *
80 * .. Scalar Arguments ..
81  LOGICAL TSTERR
82  INTEGER NIN, NOUT
83  DOUBLE PRECISION THRESH
84 * ..
85 *
86 * =====================================================================
87 *
88 * .. Local Scalars ..
89  LOGICAL OK
90  CHARACTER*3 PATH
91  INTEGER KTREXC, KTRSEN, KTRSNA, KTRSYL, LTREXC, LTRSYL,
92  $ NTESTS, NTREXC, NTRSYL
93  DOUBLE PRECISION EPS, RTREXC, RTRSYL, SFMIN
94 * ..
95 * .. Local Arrays ..
96  INTEGER LTRSEN( 3 ), LTRSNA( 3 ), NTRSEN( 3 ),
97  $ NTRSNA( 3 )
98  DOUBLE PRECISION RTRSEN( 3 ), RTRSNA( 3 )
99 * ..
100 * .. External Subroutines ..
101  EXTERNAL zerrec, zget35, zget36, zget37, zget38
102 * ..
103 * .. External Functions ..
104  DOUBLE PRECISION DLAMCH
105  EXTERNAL dlamch
106 * ..
107 * .. Executable Statements ..
108 *
109  path( 1: 1 ) = 'Zomplex precision'
110  path( 2: 3 ) = 'EC'
111  eps = dlamch( 'P' )
112  sfmin = dlamch( 'S' )
113  WRITE( nout, fmt = 9994 )
114  WRITE( nout, fmt = 9993 )eps, sfmin
115  WRITE( nout, fmt = 9992 )thresh
116 *
117 * Test error exits if TSTERR is .TRUE.
118 *
119  IF( tsterr )
120  $ CALL zerrec( path, nout )
121 *
122  ok = .true.
123  CALL zget35( rtrsyl, ltrsyl, ntrsyl, ktrsyl, nin )
124  IF( rtrsyl.GT.thresh ) THEN
125  ok = .false.
126  WRITE( nout, fmt = 9999 )rtrsyl, ltrsyl, ntrsyl, ktrsyl
127  END IF
128 *
129  CALL zget36( rtrexc, ltrexc, ntrexc, ktrexc, nin )
130  IF( rtrexc.GT.thresh .OR. ntrexc.GT.0 ) THEN
131  ok = .false.
132  WRITE( nout, fmt = 9998 )rtrexc, ltrexc, ntrexc, ktrexc
133  END IF
134 *
135  CALL zget37( rtrsna, ltrsna, ntrsna, ktrsna, nin )
136  IF( rtrsna( 1 ).GT.thresh .OR. rtrsna( 2 ).GT.thresh .OR.
137  $ ntrsna( 1 ).NE.0 .OR. ntrsna( 2 ).NE.0 .OR. ntrsna( 3 ).NE.0 )
138  $ THEN
139  ok = .false.
140  WRITE( nout, fmt = 9997 )rtrsna, ltrsna, ntrsna, ktrsna
141  END IF
142 *
143  CALL zget38( rtrsen, ltrsen, ntrsen, ktrsen, nin )
144  IF( rtrsen( 1 ).GT.thresh .OR. rtrsen( 2 ).GT.thresh .OR.
145  $ ntrsen( 1 ).NE.0 .OR. ntrsen( 2 ).NE.0 .OR. ntrsen( 3 ).NE.0 )
146  $ THEN
147  ok = .false.
148  WRITE( nout, fmt = 9996 )rtrsen, ltrsen, ntrsen, ktrsen
149  END IF
150 *
151  ntests = ktrsyl + ktrexc + ktrsna + ktrsen
152  IF( ok )
153  $ WRITE( nout, fmt = 9995 )path, ntests
154 *
155  9999 FORMAT( ' Error in ZTRSYL: RMAX =', d12.3, / ' LMAX = ', i8,
156  $ ' NINFO=', i8, ' KNT=', i8 )
157  9998 FORMAT( ' Error in ZTREXC: RMAX =', d12.3, / ' LMAX = ', i8,
158  $ ' NINFO=', i8, ' KNT=', i8 )
159  9997 FORMAT( ' Error in ZTRSNA: RMAX =', 3d12.3, / ' LMAX = ', 3i8,
160  $ ' NINFO=', 3i8, ' KNT=', i8 )
161  9996 FORMAT( ' Error in ZTRSEN: RMAX =', 3d12.3, / ' LMAX = ', 3i8,
162  $ ' NINFO=', 3i8, ' KNT=', i8 )
163  9995 FORMAT( / 1x, 'All tests for ', a3,
164  $ ' routines passed the threshold ( ', i6, ' tests run)' )
165  9994 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition',
166  $ ' estimation routines', / ' ZTRSYL, ZTREXC, ZTRSNA, ZTRSEN',
167  $ / )
168  9993 FORMAT( ' Relative machine precision (EPS) = ', d16.6,
169  $ / ' Safe minimum (SFMIN) = ', d16.6, / )
170  9992 FORMAT( ' Routines pass computational tests if test ratio is ',
171  $ 'less than', f8.2, / / )
172  RETURN
173 *
174 * End of ZCHKEC
175 *
176  END
subroutine zget35(RMAX, LMAX, NINFO, KNT, NIN)
ZGET35
Definition: zget35.f:84
subroutine zget36(RMAX, LMAX, NINFO, KNT, NIN)
ZGET36
Definition: zget36.f:85
subroutine zerrec(PATH, NUNIT)
ZERREC
Definition: zerrec.f:56
subroutine zget38(RMAX, LMAX, NINFO, KNT, NIN)
ZGET38
Definition: zget38.f:91
subroutine zget37(RMAX, LMAX, NINFO, KNT, NIN)
ZGET37
Definition: zget37.f:90
subroutine zchkec(THRESH, TSTERR, NIN, NOUT)
ZCHKEC
Definition: zchkec.f:75