LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ dchkec()

subroutine dchkec ( double precision  THRESH,
logical  TSTERR,
integer  NIN,
integer  NOUT 
)

DCHKEC

Purpose:
 DCHKEC tests eigen- condition estimation routines
        DLALN2, DLASY2, DLANV2, DLAQTR, DLAEXC,
        DTRSYL, DTREXC, DTRSNA, DTRSEN

 In all cases, the routine runs through a fixed set of numerical
 examples, subjects them to various tests, and compares the test
 results to a threshold THRESH. In addition, DTREXC, DTRSNA and DTRSEN
 are tested by reading in precomputed examples from a file (on input
 unit NIN).  Output is written to output unit NOUT.
Parameters
[in]THRESH
          THRESH is DOUBLE PRECISION
          Threshold for residual tests.  A computed test ratio passes
          the threshold if it is less than THRESH.
[in]TSTERR
          TSTERR is LOGICAL
          Flag that indicates whether error exits are to be tested.
[in]NIN
          NIN is INTEGER
          The logical unit number for input.
[in]NOUT
          NOUT is INTEGER
          The logical unit number for output.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
December 2016

Definition at line 78 of file dchkec.f.

78 *
79 * -- LAPACK test routine (version 3.7.0) --
80 * -- LAPACK is a software package provided by Univ. of Tennessee, --
81 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
82 * December 2016
83 *
84 * .. Scalar Arguments ..
85  LOGICAL tsterr
86  INTEGER nin, nout
87  DOUBLE PRECISION thresh
88 * ..
89 *
90 * =====================================================================
91 *
92 * .. Local Scalars ..
93  LOGICAL ok
94  CHARACTER*3 path
95  INTEGER klaexc, klaln2, klanv2, klaqtr, klasy2, ktrexc,
96  $ ktrsen, ktrsna, ktrsyl, llaexc, llaln2, llanv2,
97  $ llaqtr, llasy2, ltrexc, ltrsyl, nlanv2, nlaqtr,
98  $ nlasy2, ntests, ntrsyl
99  DOUBLE PRECISION eps, rlaexc, rlaln2, rlanv2, rlaqtr, rlasy2,
100  $ rtrexc, rtrsyl, sfmin
101 * ..
102 * .. Local Arrays ..
103  INTEGER ltrsen( 3 ), ltrsna( 3 ), nlaexc( 2 ),
104  $ nlaln2( 2 ), ntrexc( 3 ), ntrsen( 3 ),
105  $ ntrsna( 3 )
106  DOUBLE PRECISION rtrsen( 3 ), rtrsna( 3 )
107 * ..
108 * .. External Subroutines ..
109  EXTERNAL derrec, dget31, dget32, dget33, dget34, dget35,
111 * ..
112 * .. External Functions ..
113  DOUBLE PRECISION dlamch
114  EXTERNAL dlamch
115 * ..
116 * .. Executable Statements ..
117 *
118  path( 1: 1 ) = 'Double precision'
119  path( 2: 3 ) = 'EC'
120  eps = dlamch( 'P' )
121  sfmin = dlamch( 'S' )
122 *
123 * Print header information
124 *
125  WRITE( nout, fmt = 9989 )
126  WRITE( nout, fmt = 9988 )eps, sfmin
127  WRITE( nout, fmt = 9987 )thresh
128 *
129 * Test error exits if TSTERR is .TRUE.
130 *
131  IF( tsterr )
132  $ CALL derrec( path, nout )
133 *
134  ok = .true.
135  CALL dget31( rlaln2, llaln2, nlaln2, klaln2 )
136  IF( rlaln2.GT.thresh .OR. nlaln2( 1 ).NE.0 ) THEN
137  ok = .false.
138  WRITE( nout, fmt = 9999 )rlaln2, llaln2, nlaln2, klaln2
139  END IF
140 *
141  CALL dget32( rlasy2, llasy2, nlasy2, klasy2 )
142  IF( rlasy2.GT.thresh ) THEN
143  ok = .false.
144  WRITE( nout, fmt = 9998 )rlasy2, llasy2, nlasy2, klasy2
145  END IF
146 *
147  CALL dget33( rlanv2, llanv2, nlanv2, klanv2 )
148  IF( rlanv2.GT.thresh .OR. nlanv2.NE.0 ) THEN
149  ok = .false.
150  WRITE( nout, fmt = 9997 )rlanv2, llanv2, nlanv2, klanv2
151  END IF
152 *
153  CALL dget34( rlaexc, llaexc, nlaexc, klaexc )
154  IF( rlaexc.GT.thresh .OR. nlaexc( 2 ).NE.0 ) THEN
155  ok = .false.
156  WRITE( nout, fmt = 9996 )rlaexc, llaexc, nlaexc, klaexc
157  END IF
158 *
159  CALL dget35( rtrsyl, ltrsyl, ntrsyl, ktrsyl )
160  IF( rtrsyl.GT.thresh ) THEN
161  ok = .false.
162  WRITE( nout, fmt = 9995 )rtrsyl, ltrsyl, ntrsyl, ktrsyl
163  END IF
164 *
165  CALL dget36( rtrexc, ltrexc, ntrexc, ktrexc, nin )
166  IF( rtrexc.GT.thresh .OR. ntrexc( 3 ).GT.0 ) THEN
167  ok = .false.
168  WRITE( nout, fmt = 9994 )rtrexc, ltrexc, ntrexc, ktrexc
169  END IF
170 *
171  CALL dget37( rtrsna, ltrsna, ntrsna, ktrsna, nin )
172  IF( rtrsna( 1 ).GT.thresh .OR. rtrsna( 2 ).GT.thresh .OR.
173  $ ntrsna( 1 ).NE.0 .OR. ntrsna( 2 ).NE.0 .OR. ntrsna( 3 ).NE.0 )
174  $ THEN
175  ok = .false.
176  WRITE( nout, fmt = 9993 )rtrsna, ltrsna, ntrsna, ktrsna
177  END IF
178 *
179  CALL dget38( rtrsen, ltrsen, ntrsen, ktrsen, nin )
180  IF( rtrsen( 1 ).GT.thresh .OR. rtrsen( 2 ).GT.thresh .OR.
181  $ ntrsen( 1 ).NE.0 .OR. ntrsen( 2 ).NE.0 .OR. ntrsen( 3 ).NE.0 )
182  $ THEN
183  ok = .false.
184  WRITE( nout, fmt = 9992 )rtrsen, ltrsen, ntrsen, ktrsen
185  END IF
186 *
187  CALL dget39( rlaqtr, llaqtr, nlaqtr, klaqtr )
188  IF( rlaqtr.GT.thresh ) THEN
189  ok = .false.
190  WRITE( nout, fmt = 9991 )rlaqtr, llaqtr, nlaqtr, klaqtr
191  END IF
192 *
193  ntests = klaln2 + klasy2 + klanv2 + klaexc + ktrsyl + ktrexc +
194  $ ktrsna + ktrsen + klaqtr
195  IF( ok )
196  $ WRITE( nout, fmt = 9990 )path, ntests
197 *
198  RETURN
199  9999 FORMAT( ' Error in DLALN2: RMAX =', d12.3, / ' LMAX = ', i8, ' N',
200  $ 'INFO=', 2i8, ' KNT=', i8 )
201  9998 FORMAT( ' Error in DLASY2: RMAX =', d12.3, / ' LMAX = ', i8, ' N',
202  $ 'INFO=', i8, ' KNT=', i8 )
203  9997 FORMAT( ' Error in DLANV2: RMAX =', d12.3, / ' LMAX = ', i8, ' N',
204  $ 'INFO=', i8, ' KNT=', i8 )
205  9996 FORMAT( ' Error in DLAEXC: RMAX =', d12.3, / ' LMAX = ', i8, ' N',
206  $ 'INFO=', 2i8, ' KNT=', i8 )
207  9995 FORMAT( ' Error in DTRSYL: RMAX =', d12.3, / ' LMAX = ', i8, ' N',
208  $ 'INFO=', i8, ' KNT=', i8 )
209  9994 FORMAT( ' Error in DTREXC: RMAX =', d12.3, / ' LMAX = ', i8, ' N',
210  $ 'INFO=', 3i8, ' KNT=', i8 )
211  9993 FORMAT( ' Error in DTRSNA: RMAX =', 3d12.3, / ' LMAX = ', 3i8,
212  $ ' NINFO=', 3i8, ' KNT=', i8 )
213  9992 FORMAT( ' Error in DTRSEN: RMAX =', 3d12.3, / ' LMAX = ', 3i8,
214  $ ' NINFO=', 3i8, ' KNT=', i8 )
215  9991 FORMAT( ' Error in DLAQTR: RMAX =', d12.3, / ' LMAX = ', i8, ' N',
216  $ 'INFO=', i8, ' KNT=', i8 )
217  9990 FORMAT( / 1x, 'All tests for ', a3, ' routines passed the thresh',
218  $ 'old ( ', i6, ' tests run)' )
219  9989 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition estim',
220  $ 'ation routines', / ' DLALN2, DLASY2, DLANV2, DLAEXC, DTRS',
221  $ 'YL, DTREXC, DTRSNA, DTRSEN, DLAQTR', / )
222  9988 FORMAT( ' Relative machine precision (EPS) = ', d16.6, / ' Safe ',
223  $ 'minimum (SFMIN) = ', d16.6, / )
224  9987 FORMAT( ' Routines pass computational tests if test ratio is les',
225  $ 's than', f8.2, / / )
226 *
227 * End of DCHKEC
228 *
subroutine dget33(RMAX, LMAX, NINFO, KNT)
DGET33
Definition: dget33.f:78
subroutine dget36(RMAX, LMAX, NINFO, KNT, NIN)
DGET36
Definition: dget36.f:90
double precision function dlamch(CMACH)
DLAMCH
Definition: dlamch.f:65
subroutine dget39(RMAX, LMAX, NINFO, KNT)
DGET39
Definition: dget39.f:105
subroutine dget34(RMAX, LMAX, NINFO, KNT)
DGET34
Definition: dget34.f:84
subroutine dget38(RMAX, LMAX, NINFO, KNT, NIN)
DGET38
Definition: dget38.f:93
subroutine dget35(RMAX, LMAX, NINFO, KNT)
DGET35
Definition: dget35.f:80
subroutine dget32(RMAX, LMAX, NINFO, KNT)
DGET32
Definition: dget32.f:84
subroutine dget37(RMAX, LMAX, NINFO, KNT, NIN)
DGET37
Definition: dget37.f:92
subroutine derrec(PATH, NUNIT)
DERREC
Definition: derrec.f:58
subroutine dget31(RMAX, LMAX, NINFO, KNT)
DGET31
Definition: dget31.f:93
Here is the call graph for this function:
Here is the caller graph for this function: