3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * SUBROUTINE DERRGE( PATH, NUNIT )
13 * .. Scalar Arguments ..
24 *> DERRGE tests the error exits for the DOUBLE PRECISION routines
25 *> for general matrices.
33 *> PATH is CHARACTER*3
34 *> The LAPACK path name for the routines to be tested.
40 *> The unit number for output.
46 *> \author Univ. of Tennessee
47 *> \author Univ. of California Berkeley
48 *> \author Univ. of Colorado Denver
51 *> \date November 2011
53 *> \ingroup double_lin
55 * =====================================================================
56 SUBROUTINE DERRGE( PATH, NUNIT )
58 * -- LAPACK test routine (version 3.4.0) --
59 * -- LAPACK is a software package provided by Univ. of Tennessee, --
60 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
63 * .. Scalar Arguments ..
68 * =====================================================================
72 PARAMETER ( NMAX = 4, LW = 3*NMAX )
77 DOUBLE PRECISION ANRM, CCOND, RCOND
80 INTEGER IP( NMAX ), IW( NMAX )
81 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
82 $ R1( NMAX ), R2( NMAX ), W( LW ), X( NMAX )
84 * .. External Functions ..
88 * .. External Subroutines ..
89 EXTERNAL ALAESM, CHKXER, DGBCON, DGBEQU, DGBRFS, DGBTF2,
90 $ DGBTRF, DGBTRS, DGECON, DGEEQU, DGERFS, DGETF2,
91 $ DGETRF, DGETRI, DGETRS
93 * .. Scalars in Common ..
99 COMMON / INFOC / INFOT, NOUT, OK, LERR
100 COMMON / SRNAMC / SRNAMT
102 * .. Intrinsic Functions ..
105 * .. Executable Statements ..
108 WRITE( NOUT, FMT = * )
111 * Set the variables to innocuous values.
115 A( I, J ) = 1.D0 / DBLE( I+J )
116 AF( I, J ) = 1.D0 / DBLE( I+J )
128 IF( LSAMEN( 2, C2, 'GE' ) ) THEN
130 * Test error exits of the routines that use the LU decomposition
131 * of a general matrix.
137 CALL DGETRF( -1, 0, A, 1, IP, INFO )
138 CALL CHKXER( 'DGETRF', INFOT, NOUT, LERR, OK )
140 CALL DGETRF( 0, -1, A, 1, IP, INFO )
141 CALL CHKXER( 'DGETRF', INFOT, NOUT, LERR, OK )
143 CALL DGETRF( 2, 1, A, 1, IP, INFO )
144 CALL CHKXER( 'DGETRF', INFOT, NOUT, LERR, OK )
150 CALL DGETF2( -1, 0, A, 1, IP, INFO )
151 CALL CHKXER( 'DGETF2', INFOT, NOUT, LERR, OK )
153 CALL DGETF2( 0, -1, A, 1, IP, INFO )
154 CALL CHKXER( 'DGETF2', INFOT, NOUT, LERR, OK )
156 CALL DGETF2( 2, 1, A, 1, IP, INFO )
157 CALL CHKXER( 'DGETF2', INFOT, NOUT, LERR, OK )
163 CALL DGETRI( -1, A, 1, IP, W, LW, INFO )
164 CALL CHKXER( 'DGETRI', INFOT, NOUT, LERR, OK )
166 CALL DGETRI( 2, A, 1, IP, W, LW, INFO )
167 CALL CHKXER( 'DGETRI', INFOT, NOUT, LERR, OK )
173 CALL DGETRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
174 CALL CHKXER( 'DGETRS', INFOT, NOUT, LERR, OK )
176 CALL DGETRS( 'N', -1, 0, A, 1, IP, B, 1, INFO )
177 CALL CHKXER( 'DGETRS', INFOT, NOUT, LERR, OK )
179 CALL DGETRS( 'N', 0, -1, A, 1, IP, B, 1, INFO )
180 CALL CHKXER( 'DGETRS', INFOT, NOUT, LERR, OK )
182 CALL DGETRS( 'N', 2, 1, A, 1, IP, B, 2, INFO )
183 CALL CHKXER( 'DGETRS', INFOT, NOUT, LERR, OK )
185 CALL DGETRS( 'N', 2, 1, A, 2, IP, B, 1, INFO )
186 CALL CHKXER( 'DGETRS', INFOT, NOUT, LERR, OK )
192 CALL DGERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
194 CALL CHKXER( 'DGERFS', INFOT, NOUT, LERR, OK )
196 CALL DGERFS( 'N', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
198 CALL CHKXER( 'DGERFS', INFOT, NOUT, LERR, OK )
200 CALL DGERFS( 'N', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
202 CALL CHKXER( 'DGERFS', INFOT, NOUT, LERR, OK )
204 CALL DGERFS( 'N', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
206 CALL CHKXER( 'DGERFS', INFOT, NOUT, LERR, OK )
208 CALL DGERFS( 'N', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
210 CALL CHKXER( 'DGERFS', INFOT, NOUT, LERR, OK )
212 CALL DGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
214 CALL CHKXER( 'DGERFS', INFOT, NOUT, LERR, OK )
216 CALL DGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
218 CALL CHKXER( 'DGERFS', INFOT, NOUT, LERR, OK )
224 CALL DGECON( '/', 0, A, 1, ANRM, RCOND, W, IW, INFO )
225 CALL CHKXER( 'DGECON', INFOT, NOUT, LERR, OK )
227 CALL DGECON( '1', -1, A, 1, ANRM, RCOND, W, IW, INFO )
228 CALL CHKXER( 'DGECON', INFOT, NOUT, LERR, OK )
230 CALL DGECON( '1', 2, A, 1, ANRM, RCOND, W, IW, INFO )
231 CALL CHKXER( 'DGECON', INFOT, NOUT, LERR, OK )
237 CALL DGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
238 CALL CHKXER( 'DGEEQU', INFOT, NOUT, LERR, OK )
240 CALL DGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
241 CALL CHKXER( 'DGEEQU', INFOT, NOUT, LERR, OK )
243 CALL DGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
244 CALL CHKXER( 'DGEEQU', INFOT, NOUT, LERR, OK )
246 ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
248 * Test error exits of the routines that use the LU decomposition
249 * of a general band matrix.
255 CALL DGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
256 CALL CHKXER( 'DGBTRF', INFOT, NOUT, LERR, OK )
258 CALL DGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
259 CALL CHKXER( 'DGBTRF', INFOT, NOUT, LERR, OK )
261 CALL DGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
262 CALL CHKXER( 'DGBTRF', INFOT, NOUT, LERR, OK )
264 CALL DGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
265 CALL CHKXER( 'DGBTRF', INFOT, NOUT, LERR, OK )
267 CALL DGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
268 CALL CHKXER( 'DGBTRF', INFOT, NOUT, LERR, OK )
274 CALL DGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
275 CALL CHKXER( 'DGBTF2', INFOT, NOUT, LERR, OK )
277 CALL DGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
278 CALL CHKXER( 'DGBTF2', INFOT, NOUT, LERR, OK )
280 CALL DGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
281 CALL CHKXER( 'DGBTF2', INFOT, NOUT, LERR, OK )
283 CALL DGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
284 CALL CHKXER( 'DGBTF2', INFOT, NOUT, LERR, OK )
286 CALL DGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
287 CALL CHKXER( 'DGBTF2', INFOT, NOUT, LERR, OK )
293 CALL DGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
294 CALL CHKXER( 'DGBTRS', INFOT, NOUT, LERR, OK )
296 CALL DGBTRS( 'N', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
297 CALL CHKXER( 'DGBTRS', INFOT, NOUT, LERR, OK )
299 CALL DGBTRS( 'N', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
300 CALL CHKXER( 'DGBTRS', INFOT, NOUT, LERR, OK )
302 CALL DGBTRS( 'N', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
303 CALL CHKXER( 'DGBTRS', INFOT, NOUT, LERR, OK )
305 CALL DGBTRS( 'N', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
306 CALL CHKXER( 'DGBTRS', INFOT, NOUT, LERR, OK )
308 CALL DGBTRS( 'N', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
309 CALL CHKXER( 'DGBTRS', INFOT, NOUT, LERR, OK )
311 CALL DGBTRS( 'N', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
312 CALL CHKXER( 'DGBTRS', INFOT, NOUT, LERR, OK )
318 CALL DGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
320 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
322 CALL DGBRFS( 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
324 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
326 CALL DGBRFS( 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
328 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
330 CALL DGBRFS( 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
332 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
334 CALL DGBRFS( 'N', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
336 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
338 CALL DGBRFS( 'N', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
340 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
342 CALL DGBRFS( 'N', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
344 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
346 CALL DGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
348 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
350 CALL DGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
352 CALL CHKXER( 'DGBRFS', INFOT, NOUT, LERR, OK )
358 CALL DGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
359 CALL CHKXER( 'DGBCON', INFOT, NOUT, LERR, OK )
361 CALL DGBCON( '1', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, IW,
363 CALL CHKXER( 'DGBCON', INFOT, NOUT, LERR, OK )
365 CALL DGBCON( '1', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, IW,
367 CALL CHKXER( 'DGBCON', INFOT, NOUT, LERR, OK )
369 CALL DGBCON( '1', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, IW,
371 CALL CHKXER( 'DGBCON', INFOT, NOUT, LERR, OK )
373 CALL DGBCON( '1', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, IW, INFO )
374 CALL CHKXER( 'DGBCON', INFOT, NOUT, LERR, OK )
380 CALL DGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
382 CALL CHKXER( 'DGBEQU', INFOT, NOUT, LERR, OK )
384 CALL DGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
386 CALL CHKXER( 'DGBEQU', INFOT, NOUT, LERR, OK )
388 CALL DGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
390 CALL CHKXER( 'DGBEQU', INFOT, NOUT, LERR, OK )
392 CALL DGBEQU( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
394 CALL CHKXER( 'DGBEQU', INFOT, NOUT, LERR, OK )
396 CALL DGBEQU( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
398 CALL CHKXER( 'DGBEQU', INFOT, NOUT, LERR, OK )
401 * Print a summary line.
403 CALL ALAESM( PATH, OK, NOUT )