OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
serrge.f
Go to the documentation of this file.
1*> \brief \b SERRGE
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 SERRGE( PATH, NUNIT )
12*
13* .. Scalar Arguments ..
14* CHARACTER*3 PATH
15* INTEGER NUNIT
16* ..
17*
18*
19*> \par Purpose:
20* =============
21*>
22*> \verbatim
23*>
24*> SERRGE tests the error exits for the REAL routines
25*> for general matrices.
26*> \endverbatim
27*
28* Arguments:
29* ==========
30*
31*> \param[in] PATH
32*> \verbatim
33*> PATH is CHARACTER*3
34*> The LAPACK path name for the routines to be tested.
35*> \endverbatim
36*>
37*> \param[in] NUNIT
38*> \verbatim
39*> NUNIT is INTEGER
40*> The unit number for output.
41*> \endverbatim
42*
43* Authors:
44* ========
45*
46*> \author Univ. of Tennessee
47*> \author Univ. of California Berkeley
48*> \author Univ. of Colorado Denver
49*> \author NAG Ltd.
50*
51*> \ingroup single_lin
52*
53* =====================================================================
54 SUBROUTINE serrge( PATH, NUNIT )
55*
56* -- LAPACK test routine --
57* -- LAPACK is a software package provided by Univ. of Tennessee, --
58* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
59*
60* .. Scalar Arguments ..
61 CHARACTER*3 PATH
62 INTEGER NUNIT
63* ..
64*
65* =====================================================================
66*
67* .. Parameters ..
68 INTEGER NMAX, LW
69 parameter( nmax = 4, lw = 3*nmax )
70* ..
71* .. Local Scalars ..
72 CHARACTER*2 C2
73 INTEGER I, INFO, J
74 REAL ANRM, CCOND, RCOND
75* ..
76* .. Local Arrays ..
77 INTEGER IP( NMAX ), IW( NMAX )
78 REAL A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
79 $ R1( NMAX ), R2( NMAX ), W( LW ), X( NMAX )
80* ..
81* .. External Functions ..
82 LOGICAL LSAMEN
83 EXTERNAL lsamen
84* ..
85* .. External Subroutines ..
86 EXTERNAL alaesm, chkxer, sgbcon, sgbequ, sgbrfs, sgbtf2,
89* ..
90* .. Scalars in Common ..
91 LOGICAL LERR, OK
92 CHARACTER*32 SRNAMT
93 INTEGER INFOT, NOUT
94* ..
95* .. Common blocks ..
96 COMMON / infoc / infot, nout, ok, lerr
97 COMMON / srnamc / srnamt
98* ..
99* .. Intrinsic Functions ..
100 INTRINSIC real
101* ..
102* .. Executable Statements ..
103*
104 nout = nunit
105 WRITE( nout, fmt = * )
106 c2 = path( 2: 3 )
107*
108* Set the variables to innocuous values.
109*
110 DO 20 j = 1, nmax
111 DO 10 i = 1, nmax
112 a( i, j ) = 1. / real( i+j )
113 af( i, j ) = 1. / real( i+j )
114 10 CONTINUE
115 b( j ) = 0.
116 r1( j ) = 0.
117 r2( j ) = 0.
118 w( j ) = 0.
119 x( j ) = 0.
120 ip( j ) = j
121 iw( j ) = j
122 20 CONTINUE
123 ok = .true.
124*
125 IF( lsamen( 2, c2, 'GE' ) ) THEN
126*
127* Test error exits of the routines that use the LU decomposition
128* of a general matrix.
129*
130* SGETRF
131*
132 srnamt = 'SGETRF'
133 infot = 1
134 CALL sgetrf( -1, 0, a, 1, ip, info )
135 CALL chkxer( 'SGETRF', infot, nout, lerr, ok )
136 infot = 2
137 CALL sgetrf( 0, -1, a, 1, ip, info )
138 CALL chkxer( 'SGETRF', infot, nout, lerr, ok )
139 infot = 4
140 CALL sgetrf( 2, 1, a, 1, ip, info )
141 CALL chkxer( 'SGETRF', infot, nout, lerr, ok )
142*
143* SGETF2
144*
145 srnamt = 'SGETF2'
146 infot = 1
147 CALL sgetf2( -1, 0, a, 1, ip, info )
148 CALL chkxer( 'SGETF2', infot, nout, lerr, ok )
149 infot = 2
150 CALL sgetf2( 0, -1, a, 1, ip, info )
151 CALL chkxer( 'SGETF2', infot, nout, lerr, ok )
152 infot = 4
153 CALL sgetf2( 2, 1, a, 1, ip, info )
154 CALL chkxer( 'SGETF2', infot, nout, lerr, ok )
155*
156* SGETRI
157*
158 srnamt = 'SGETRI'
159 infot = 1
160 CALL sgetri( -1, a, 1, ip, w, lw, info )
161 CALL chkxer( 'SGETRI', infot, nout, lerr, ok )
162 infot = 3
163 CALL sgetri( 2, a, 1, ip, w, lw, info )
164 CALL chkxer( 'SGETRI', infot, nout, lerr, ok )
165*
166* SGETRS
167*
168 srnamt = 'SGETRS'
169 infot = 1
170 CALL sgetrs( '/', 0, 0, a, 1, ip, b, 1, info )
171 CALL chkxer( 'SGETRS', infot, nout, lerr, ok )
172 infot = 2
173 CALL sgetrs( 'N', -1, 0, a, 1, ip, b, 1, info )
174 CALL chkxer( 'SGETRS', infot, nout, lerr, ok )
175 infot = 3
176 CALL sgetrs( 'N', 0, -1, a, 1, ip, b, 1, info )
177 CALL chkxer( 'SGETRS', infot, nout, lerr, ok )
178 infot = 5
179 CALL sgetrs( 'N', 2, 1, a, 1, ip, b, 2, info )
180 CALL chkxer( 'SGETRS', infot, nout, lerr, ok )
181 infot = 8
182 CALL sgetrs( 'N', 2, 1, a, 2, ip, b, 1, info )
183 CALL chkxer( 'SGETRS', infot, nout, lerr, ok )
184*
185* SGERFS
186*
187 srnamt = 'SGERFS'
188 infot = 1
189 CALL sgerfs( '/', 0, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2, w,
190 $ iw, info )
191 CALL chkxer( 'SGERFS', infot, nout, lerr, ok )
192 infot = 2
193 CALL sgerfs( 'N', -1, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
194 $ w, iw, info )
195 CALL chkxer( 'SGERFS', infot, nout, lerr, ok )
196 infot = 3
197 CALL sgerfs( 'N', 0, -1, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
198 $ w, iw, info )
199 CALL chkxer( 'sgerfs', INFOT, NOUT, LERR, OK )
200 INFOT = 5
201 CALL SGERFS( 'n', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
202 $ IW, INFO )
203 CALL CHKXER( 'sgerfs', INFOT, NOUT, LERR, OK )
204 INFOT = 7
205 CALL SGERFS( 'n', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
206 $ IW, INFO )
207 CALL CHKXER( 'sgerfs', INFOT, NOUT, LERR, OK )
208 INFOT = 10
209 CALL SGERFS( 'n', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
210 $ IW, INFO )
211 CALL CHKXER( 'sgerfs', INFOT, NOUT, LERR, OK )
212 INFOT = 12
213 CALL SGERFS( 'n', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
214 $ IW, INFO )
215 CALL CHKXER( 'sgerfs', INFOT, NOUT, LERR, OK )
216*
217* SGECON
218*
219 SRNAMT = 'sgecon'
220 INFOT = 1
221 CALL SGECON( '/', 0, A, 1, ANRM, RCOND, W, IW, INFO )
222 CALL CHKXER( 'sgecon', INFOT, NOUT, LERR, OK )
223 INFOT = 2
224 CALL SGECON( '1', -1, A, 1, ANRM, RCOND, W, IW, INFO )
225 CALL CHKXER( 'sgecon', INFOT, NOUT, LERR, OK )
226 INFOT = 4
227 CALL SGECON( '1', 2, A, 1, ANRM, RCOND, W, IW, INFO )
228 CALL CHKXER( 'sgecon', INFOT, NOUT, LERR, OK )
229*
230* SGEEQU
231*
232 SRNAMT = 'sgeequ'
233 INFOT = 1
234 CALL SGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
235 CALL CHKXER( 'sgeequ', INFOT, NOUT, LERR, OK )
236 INFOT = 2
237 CALL SGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
238 CALL CHKXER( 'sgeequ', INFOT, NOUT, LERR, OK )
239 INFOT = 4
240 CALL SGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
241 CALL CHKXER( 'sgeequ', INFOT, NOUT, LERR, OK )
242*
243 ELSE IF( LSAMEN( 2, C2, 'gb' ) ) THEN
244*
245* Test error exits of the routines that use the LU decomposition
246* of a general band matrix.
247*
248* SGBTRF
249*
250 SRNAMT = 'sgbtrf'
251 INFOT = 1
252 CALL SGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
253 CALL CHKXER( 'sgbtrf', INFOT, NOUT, LERR, OK )
254 INFOT = 2
255 CALL SGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
256 CALL CHKXER( 'sgbtrf', INFOT, NOUT, LERR, OK )
257 INFOT = 3
258 CALL SGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
259 CALL CHKXER( 'sgbtrf', INFOT, NOUT, LERR, OK )
260 INFOT = 4
261 CALL SGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
262 CALL CHKXER( 'sgbtrf', INFOT, NOUT, LERR, OK )
263 INFOT = 6
264 CALL SGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
265 CALL CHKXER( 'sgbtrf', INFOT, NOUT, LERR, OK )
266*
267* SGBTF2
268*
269 SRNAMT = 'sgbtf2'
270 INFOT = 1
271 CALL SGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
272 CALL CHKXER( 'sgbtf2', INFOT, NOUT, LERR, OK )
273 INFOT = 2
274 CALL SGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
275 CALL CHKXER( 'sgbtf2', INFOT, NOUT, LERR, OK )
276 INFOT = 3
277 CALL SGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
278 CALL CHKXER( 'sgbtf2', INFOT, NOUT, LERR, OK )
279 INFOT = 4
280 CALL SGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
281 CALL CHKXER( 'sgbtf2', INFOT, NOUT, LERR, OK )
282 INFOT = 6
283 CALL SGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
284 CALL CHKXER( 'sgbtf2', INFOT, NOUT, LERR, OK )
285*
286* SGBTRS
287*
288 SRNAMT = 'sgbtrs'
289 INFOT = 1
290 CALL SGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
291 CALL CHKXER( 'sgbtrs', INFOT, NOUT, LERR, OK )
292 INFOT = 2
293 CALL SGBTRS( 'n', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
294 CALL CHKXER( 'sgbtrs', INFOT, NOUT, LERR, OK )
295 INFOT = 3
296 CALL SGBTRS( 'n', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
297 CALL CHKXER( 'sgbtrs', INFOT, NOUT, LERR, OK )
298 INFOT = 4
299 CALL SGBTRS( 'n', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
300 CALL CHKXER( 'sgbtrs', INFOT, NOUT, LERR, OK )
301 INFOT = 5
302 CALL SGBTRS( 'n', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
303 CALL CHKXER( 'sgbtrs', INFOT, NOUT, LERR, OK )
304 INFOT = 7
305 CALL SGBTRS( 'n', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
306 CALL CHKXER( 'sgbtrs', INFOT, NOUT, LERR, OK )
307 INFOT = 10
308 CALL SGBTRS( 'n', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
309 CALL CHKXER( 'sgbtrs', INFOT, NOUT, LERR, OK )
310*
311* SGBRFS
312*
313 SRNAMT = 'sgbrfs'
314 INFOT = 1
315 CALL SGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
316 $ R2, W, IW, INFO )
317 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
318 INFOT = 2
319 CALL SGBRFS( 'n', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
320 $ R2, W, IW, INFO )
321 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
322 INFOT = 3
323 CALL SGBRFS( 'n', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
324 $ R2, W, IW, INFO )
325 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
326 INFOT = 4
327 CALL SGBRFS( 'n', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
328 $ R2, W, IW, INFO )
329 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
330 INFOT = 5
331 CALL SGBRFS( 'n', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
332 $ R2, W, IW, INFO )
333 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
334 INFOT = 7
335 CALL SGBRFS( 'n', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
336 $ R2, W, IW, INFO )
337 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
338 INFOT = 9
339 CALL SGBRFS( 'n', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
340 $ R2, W, IW, INFO )
341 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
342 INFOT = 12
343 CALL SGBRFS( 'n', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
344 $ R2, W, IW, INFO )
345 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
346 INFOT = 14
347 CALL SGBRFS( 'n', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
348 $ R2, W, IW, INFO )
349 CALL CHKXER( 'sgbrfs', INFOT, NOUT, LERR, OK )
350*
351* SGBCON
352*
353 SRNAMT = 'sgbcon'
354 INFOT = 1
355 CALL SGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
356 CALL CHKXER( 'sgbcon', INFOT, NOUT, LERR, OK )
357 INFOT = 2
358 CALL SGBCON( '1', -1, 0, 0, a, 1, ip, anrm, rcond, w, iw,
359 $ info )
360 CALL chkxer( 'SGBCON', infot, nout, lerr, ok )
361 infot = 3
362 CALL sgbcon( '1', 1, -1, 0, a, 1, ip, anrm, rcond, w, iw,
363 $ info )
364 CALL chkxer( 'SGBCON', infot, nout, lerr, ok )
365 infot = 4
366 CALL sgbcon( '1', 1, 0, -1, a, 1, ip, anrm, rcond, w, iw,
367 $ info )
368 CALL chkxer( 'SGBCON', infot, nout, lerr, ok )
369 infot = 6
370 CALL sgbcon( '1', 2, 1, 1, a, 3, ip, anrm, rcond, w, iw, info )
371 CALL chkxer( 'SGBCON', infot, nout, lerr, ok )
372*
373* SGBEQU
374*
375 srnamt = 'SGBEQU'
376 infot = 1
377 CALL sgbequ( -1, 0, 0, 0, a, 1, r1, r2, rcond, ccond, anrm,
378 $ info )
379 CALL chkxer( 'SGBEQU', infot, nout, lerr, ok )
380 infot = 2
381 CALL sgbequ( 0, -1, 0, 0, a, 1, r1, r2, rcond, ccond, anrm,
382 $ info )
383 CALL chkxer( 'SGBEQU', infot, nout, lerr, ok )
384 infot = 3
385 CALL sgbequ( 1, 1, -1, 0, a, 1, r1, r2, rcond, ccond, anrm,
386 $ info )
387 CALL chkxer( 'SGBEQU', infot, nout, lerr, ok )
388 infot = 4
389 CALL sgbequ( 1, 1, 0, -1, a, 1, r1, r2, rcond, ccond, anrm,
390 $ info )
391 CALL chkxer( 'SGBEQU', infot, nout, lerr, ok )
392 infot = 6
393 CALL sgbequ( 2, 2, 1, 1, a, 2, r1, r2, rcond, ccond, anrm,
394 $ info )
395 CALL chkxer( 'SGBEQU', infot, nout, lerr, ok )
396 END IF
397*
398* Print a summary line.
399*
400 CALL alaesm( path, ok, nout )
401*
402 RETURN
403*
404* End of SERRGE
405*
406 END
subroutine chkxer(srnamt, infot, nout, lerr, ok)
Definition cblat2.f:3196
subroutine alaesm(path, ok, nout)
ALAESM
Definition alaesm.f:63
subroutine sgbtrf(m, n, kl, ku, ab, ldab, ipiv, info)
SGBTRF
Definition sgbtrf.f:144
subroutine sgbequ(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, info)
SGBEQU
Definition sgbequ.f:153
subroutine sgbtf2(m, n, kl, ku, ab, ldab, ipiv, info)
SGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algo...
Definition sgbtf2.f:145
subroutine sgbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, b, ldb, x, ldx, ferr, berr, work, iwork, info)
SGBRFS
Definition sgbrfs.f:205
subroutine sgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, iwork, info)
SGBCON
Definition sgbcon.f:146
subroutine sgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
SGBTRS
Definition sgbtrs.f:138
subroutine sgetrf(m, n, a, lda, ipiv, info)
SGETRF
Definition sgetrf.f:108
subroutine sgecon(norm, n, a, lda, anorm, rcond, work, iwork, info)
SGECON
Definition sgecon.f:124
subroutine sgeequ(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
SGEEQU
Definition sgeequ.f:139
subroutine sgetrs(trans, n, nrhs, a, lda, ipiv, b, ldb, info)
SGETRS
Definition sgetrs.f:121
subroutine sgetri(n, a, lda, ipiv, work, lwork, info)
SGETRI
Definition sgetri.f:114
subroutine sgetf2(m, n, a, lda, ipiv, info)
SGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row inter...
Definition sgetf2.f:108
subroutine sgerfs(trans, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, ldx, ferr, berr, work, iwork, info)
SGERFS
Definition sgerfs.f:185
subroutine serrge(path, nunit)
SERRGE
Definition serrge.f:55