OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dchkec.f
Go to the documentation of this file.
1*> \brief \b DCHKEC
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 DCHKEC( 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*> DCHKEC tests eigen- condition estimation routines
26*> DLALN2, DLASY2, DLANV2, DLAQTR, DLAEXC,
27*> DTRSYL, DTREXC, DTRSNA, DTRSEN, DTGEXC
28*>
29*> In all cases, the routine runs through a fixed set of numerical
30*> examples, subjects them to various tests, and compares the test
31*> results to a threshold THRESH. In addition, DTREXC, DTRSNA and DTRSEN
32*> are tested by reading in precomputed examples from a file (on input
33*> unit NIN). Output is written to output unit NOUT.
34*> \endverbatim
35*
36* Arguments:
37* ==========
38*
39*> \param[in] THRESH
40*> \verbatim
41*> THRESH is DOUBLE PRECISION
42*> Threshold for residual tests. A computed test ratio passes
43*> the threshold if it is less than THRESH.
44*> \endverbatim
45*>
46*> \param[in] TSTERR
47*> \verbatim
48*> TSTERR is LOGICAL
49*> Flag that indicates whether error exits are to be tested.
50*> \endverbatim
51*>
52*> \param[in] NIN
53*> \verbatim
54*> NIN is INTEGER
55*> The logical unit number for input.
56*> \endverbatim
57*>
58*> \param[in] NOUT
59*> \verbatim
60*> NOUT is INTEGER
61*> The logical unit number for output.
62*> \endverbatim
63*
64* Authors:
65* ========
66*
67*> \author Univ. of Tennessee
68*> \author Univ. of California Berkeley
69*> \author Univ. of Colorado Denver
70*> \author NAG Ltd.
71*
72*> \ingroup double_eig
73*
74* =====================================================================
75 SUBROUTINE dchkec( THRESH, TSTERR, NIN, NOUT )
76*
77* -- LAPACK test routine --
78* -- LAPACK is a software package provided by Univ. of Tennessee, --
79* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
80*
81* .. Scalar Arguments ..
82 LOGICAL TSTERR
83 INTEGER NIN, NOUT
84 DOUBLE PRECISION THRESH
85* ..
86*
87* =====================================================================
88*
89* .. Local Scalars ..
90 LOGICAL OK
91 CHARACTER*3 PATH
92 INTEGER KLAEXC, KLALN2, KLANV2, KLAQTR, KLASY2, KTREXC,
93 $ KTRSEN, KTRSNA, KTRSYL, LLAEXC, LLALN2, LLANV2,
94 $ LLAQTR, LLASY2, LTREXC, LTRSYL, NLANV2, NLAQTR,
95 $ NLASY2, NTESTS, NTRSYL, KTGEXC, NTGEXC, LTGEXC
96 DOUBLE PRECISION EPS, RLAEXC, RLALN2, RLANV2, RLAQTR, RLASY2,
97 $ RTREXC, RTRSYL, SFMIN, RTGEXC
98* ..
99* .. Local Arrays ..
100 INTEGER LTRSEN( 3 ), LTRSNA( 3 ), NLAEXC( 2 ),
101 $ NLALN2( 2 ), NTREXC( 3 ), NTRSEN( 3 ),
102 $ NTRSNA( 3 )
103 DOUBLE PRECISION RTRSEN( 3 ), RTRSNA( 3 )
104* ..
105* .. External Subroutines ..
106 EXTERNAL derrec, dget31, dget32, dget33, dget34, dget35,
108* ..
109* .. External Functions ..
110 DOUBLE PRECISION DLAMCH
111 EXTERNAL dlamch
112* ..
113* .. Executable Statements ..
114*
115 path( 1: 1 ) = 'Double precision'
116 path( 2: 3 ) = 'EC'
117 eps = dlamch( 'P' )
118 sfmin = dlamch( 'S' )
119*
120* Print header information
121*
122 WRITE( nout, fmt = 9989 )
123 WRITE( nout, fmt = 9988 )eps, sfmin
124 WRITE( nout, fmt = 9987 )thresh
125*
126* Test error exits if TSTERR is .TRUE.
127*
128 IF( tsterr )
129 $ CALL derrec( path, nout )
130*
131 ok = .true.
132 CALL dget31( rlaln2, llaln2, nlaln2, klaln2 )
133 IF( rlaln2.GT.thresh .OR. nlaln2( 1 ).NE.0 ) THEN
134 ok = .false.
135 WRITE( nout, fmt = 9999 )rlaln2, llaln2, nlaln2, klaln2
136 END IF
137*
138 CALL dget32( rlasy2, llasy2, nlasy2, klasy2 )
139 IF( rlasy2.GT.thresh ) THEN
140 ok = .false.
141 WRITE( nout, fmt = 9998 )rlasy2, llasy2, nlasy2, klasy2
142 END IF
143*
144 CALL dget33( rlanv2, llanv2, nlanv2, klanv2 )
145 IF( rlanv2.GT.thresh .OR. nlanv2.NE.0 ) THEN
146 ok = .false.
147 WRITE( nout, fmt = 9997 )rlanv2, llanv2, nlanv2, klanv2
148 END IF
149*
150 CALL dget34( rlaexc, llaexc, nlaexc, klaexc )
151 IF( rlaexc.GT.thresh .OR. nlaexc( 2 ).NE.0 ) THEN
152 ok = .false.
153 WRITE( nout, fmt = 9996 )rlaexc, llaexc, nlaexc, klaexc
154 END IF
155*
156 CALL dget35( rtrsyl, ltrsyl, ntrsyl, ktrsyl )
157 IF( rtrsyl.GT.thresh ) THEN
158 ok = .false.
159 WRITE( nout, fmt = 9995 )rtrsyl, ltrsyl, ntrsyl, ktrsyl
160 END IF
161*
162 CALL dget36( rtrexc, ltrexc, ntrexc, ktrexc, nin )
163 IF( rtrexc.GT.thresh .OR. ntrexc( 3 ).GT.0 ) THEN
164 ok = .false.
165 WRITE( nout, fmt = 9994 )rtrexc, ltrexc, ntrexc, ktrexc
166 END IF
167*
168 CALL dget37( rtrsna, ltrsna, ntrsna, ktrsna, nin )
169 IF( rtrsna( 1 ).GT.thresh .OR. rtrsna( 2 ).GT.thresh .OR.
170 $ ntrsna( 1 ).NE.0 .OR. ntrsna( 2 ).NE.0 .OR. ntrsna( 3 ).NE.0 )
171 $ THEN
172 ok = .false.
173 WRITE( nout, fmt = 9993 )rtrsna, ltrsna, ntrsna, ktrsna
174 END IF
175*
176 CALL dget38( rtrsen, ltrsen, ntrsen, ktrsen, nin )
177 IF( rtrsen( 1 ).GT.thresh .OR. rtrsen( 2 ).GT.thresh .OR.
178 $ ntrsen( 1 ).NE.0 .OR. ntrsen( 2 ).NE.0 .OR. ntrsen( 3 ).NE.0 )
179 $ THEN
180 ok = .false.
181 WRITE( nout, fmt = 9992 )rtrsen, ltrsen, ntrsen, ktrsen
182 END IF
183*
184 CALL dget39( rlaqtr, llaqtr, nlaqtr, klaqtr )
185 IF( rlaqtr.GT.thresh ) THEN
186 ok = .false.
187 WRITE( nout, fmt = 9991 )rlaqtr, llaqtr, nlaqtr, klaqtr
188 END IF
189*
190 CALL dget40( rtgexc, ltgexc, ntgexc, ktgexc, nin )
191 IF( rtgexc.GT.thresh ) THEN
192 ok = .false.
193 WRITE( nout, fmt = 9986 )rtgexc, ltgexc, ntgexc, ktgexc
194 END IF
195*
196 ntests = klaln2 + klasy2 + klanv2 + klaexc + ktrsyl + ktrexc +
197 $ ktrsna + ktrsen + klaqtr + ktgexc
198 IF( ok )
199 $ WRITE( nout, fmt = 9990 )path, ntests
200*
201 RETURN
202 9999 FORMAT( ' Error in DLALN2: RMAX =', d12.3, / ' lmax = ', I8, ' n',
203 $ 'info=', 2I8, ' knt=', I8 )
204 9998 FORMAT( ' error in dlasy2: rmax =', D12.3, / ' lmax = ', I8, ' n',
205 $ 'info=', I8, ' knt=', I8 )
206 9997 FORMAT( ' error in dlanv2: rmax =', D12.3, / ' lmax = ', I8, ' n',
207 $ 'info=', I8, ' knt=', I8 )
208 9996 FORMAT( ' error in dlaexc: rmax =', D12.3, / ' lmax = ', I8, ' n',
209 $ 'info=', 2I8, ' knt=', I8 )
210 9995 FORMAT( ' error in dtrsyl: rmax =', D12.3, / ' lmax = ', I8, ' n',
211 $ 'info=', I8, ' knt=', I8 )
212 9994 FORMAT( ' error in dtrexc: rmax =', D12.3, / ' lmax = ', I8, ' n',
213 $ 'info=', 3I8, ' knt=', i8 )
214 9993 FORMAT( ' Error in DTRSNA: RMAX =', 3d12.3, / ' lmax = ', 3I8,
215 $ ' ninfo=', 3I8, ' knt=', I8 )
216 9992 FORMAT( ' error in dtrsen: rmax =', 3D12.3, / ' lmax = ', 3I8,
217 $ ' ninfo=', 3I8, ' knt=', I8 )
218 9991 FORMAT( ' error in dlaqtr: rmax =', D12.3, / ' lmax = ', i8, ' N',
219 $ 'INFO=', i8, ' KNT=', i8 )
220 9990 FORMAT( / 1x, 'All tests for ', a3, ' routines passed the thresh',
221 $ 'old ( ', i6, ' tests run)' )
222 9989 FORMAT( ' tests of the nonsymmetric eigenproblem condition estim',
223 $ 'ation routines', / ' dlaln2, dlasy2, dlanv2, dlaexc, dtrs',
224 $ 'yl, dtrexc, dtrsna, dtrsen, dlaqtr, dtgexc', / )
225 9988 FORMAT( ' relative machine precision(eps) = ', D16.6, / ' safe ',
226 $ 'minimum(sfmin) = ', D16.6, / )
227 9987 FORMAT( ' routines pass computational tests if test ratio is les',
228 $ 's than', F8.2, / / )
229 9986 FORMAT( ' error in dtgexc: rmax =', D12.3, / ' lmax = ', I8, ' n',
230 $ 'info=', I8, ' knt=', I8 )
231*
232* End of DCHKEC
233*
234 END
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine dtgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, ifst, ilst, work, lwork, info)
DTGEXC
Definition dtgexc.f:220
subroutine dlaqtr(ltran, lreal, n, t, ldt, b, w, scale, x, work, info)
DLAQTR solves a real quasi-triangular system of equations, or a complex quasi-triangular system of sp...
Definition dlaqtr.f:165
subroutine dlanv2(a, b, c, d, rt1r, rt1i, rt2r, rt2i, cs, sn)
DLANV2 computes the Schur factorization of a real 2-by-2 nonsymmetric matrix in standard form.
Definition dlanv2.f:127
subroutine dlaln2(ltrans, na, nw, smin, ca, a, lda, d1, d2, b, ldb, wr, wi, x, ldx, scale, xnorm, info)
DLALN2 solves a 1-by-1 or 2-by-2 linear system of equations of the specified form.
Definition dlaln2.f:218
subroutine dlaexc(wantq, n, t, ldt, q, ldq, j1, n1, n2, work, info)
DLAEXC swaps adjacent diagonal blocks of a real upper quasi-triangular matrix in Schur canonical form...
Definition dlaexc.f:138
subroutine dtrexc(compq, n, t, ldt, q, ldq, ifst, ilst, work, info)
DTREXC
Definition dtrexc.f:148
subroutine dtrsna(job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, s, sep, mm, m, work, ldwork, iwork, info)
DTRSNA
Definition dtrsna.f:265
subroutine dtrsen(job, compq, select, n, t, ldt, q, ldq, wr, wi, m, s, sep, work, lwork, iwork, liwork, info)
DTRSEN
Definition dtrsen.f:313
subroutine dlasy2(ltranl, ltranr, isgn, n1, n2, tl, ldtl, tr, ldtr, b, ldb, scale, x, ldx, xnorm, info)
DLASY2 solves the Sylvester matrix equation where the matrices are of order 1 or 2.
Definition dlasy2.f:174
subroutine dtrsyl(trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc, scale, info)
DTRSYL
Definition dtrsyl.f:164
subroutine derrec(path, nunit)
DERREC
Definition derrec.f:56
subroutine dget39(rmax, lmax, ninfo, knt)
DGET39
Definition dget39.f:103
subroutine dget32(rmax, lmax, ninfo, knt)
DGET32
Definition dget32.f:82
subroutine dchkec(thresh, tsterr, nin, nout)
DCHKEC
Definition dchkec.f:76
subroutine dget34(rmax, lmax, ninfo, knt)
DGET34
Definition dget34.f:82
subroutine dget38(rmax, lmax, ninfo, knt, nin)
DGET38
Definition dget38.f:91
subroutine dget36(rmax, lmax, ninfo, knt, nin)
DGET36
Definition dget36.f:88
subroutine dget40(rmax, lmax, ninfo, knt, nin)
DGET40
Definition dget40.f:83
subroutine dget31(rmax, lmax, ninfo, knt)
DGET31
Definition dget31.f:91
subroutine dget33(rmax, lmax, ninfo, knt)
DGET33
Definition dget33.f:76
subroutine dget37(rmax, lmax, ninfo, knt, nin)
DGET37
Definition dget37.f:90
subroutine dget35(rmax, lmax, ninfo, knt)
DGET35
Definition dget35.f:78