3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * SUBROUTINE ZERRSY( PATH, NUNIT )
13 * .. Scalar Arguments ..
24 *> ZERRSY tests the error exits for the COMPLEX*16 routines
25 *> for symmetric indefinite 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 2013
53 *> \ingroup complex16_lin
55 * =====================================================================
56 SUBROUTINE ZERRSY( PATH, NUNIT )
58 * -- LAPACK test routine (version 3.5.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 )
77 DOUBLE PRECISION ANRM, RCOND
81 DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX )
82 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
83 $ W( 2*NMAX ), X( NMAX )
85 * .. External Functions ..
89 * .. External Subroutines ..
90 EXTERNAL ALAESM, CHKXER, ZSPCON, ZSPRFS, ZSPTRF, ZSPTRI,
91 $ ZSPTRS, ZSYCON, ZSYCON_ROOK, ZSYRFS, ZSYTF2,
92 $ ZSYTF2_ROOK, ZSYTRF, ZSYTRF_ROOK, ZSYTRI,
93 $ ZSYTRI_ROOK, ZSYTRI2, ZSYTRS, ZSYTRS_ROOK
95 * .. Scalars in Common ..
100 * .. Common blocks ..
101 COMMON / INFOC / INFOT, NOUT, OK, LERR
102 COMMON / SRNAMC / SRNAMT
104 * .. Intrinsic Functions ..
105 INTRINSIC DBLE, DCMPLX
107 * .. Executable Statements ..
110 WRITE( NOUT, FMT = * )
113 * Set the variables to innocuous values.
117 A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
118 $ -1.D0 / DBLE( I+J ) )
119 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
120 $ -1.D0 / DBLE( I+J ) )
132 * Test error exits of the routines that use factorization
133 * of a symmetric indefinite matrix with patrial
134 * (Bunch-Kaufman) diagonal pivoting method.
136 IF( LSAMEN( 2, C2, 'SY' ) ) THEN
142 CALL ZSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
143 CALL CHKXER( 'ZSYTRF', INFOT, NOUT, LERR, OK )
145 CALL ZSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
146 CALL CHKXER( 'ZSYTRF', INFOT, NOUT, LERR, OK )
148 CALL ZSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
149 CALL CHKXER( 'ZSYTRF', INFOT, NOUT, LERR, OK )
155 CALL ZSYTF2( '/', 0, A, 1, IP, INFO )
156 CALL CHKXER( 'ZSYTF2', INFOT, NOUT, LERR, OK )
158 CALL ZSYTF2( 'U', -1, A, 1, IP, INFO )
159 CALL CHKXER( 'ZSYTF2', INFOT, NOUT, LERR, OK )
161 CALL ZSYTF2( 'U', 2, A, 1, IP, INFO )
162 CALL CHKXER( 'ZSYTF2', INFOT, NOUT, LERR, OK )
168 CALL ZSYTRI( '/', 0, A, 1, IP, W, INFO )
169 CALL CHKXER( 'ZSYTRI', INFOT, NOUT, LERR, OK )
171 CALL ZSYTRI( 'U', -1, A, 1, IP, W, INFO )
172 CALL CHKXER( 'ZSYTRI', INFOT, NOUT, LERR, OK )
174 CALL ZSYTRI( 'U', 2, A, 1, IP, W, INFO )
175 CALL CHKXER( 'ZSYTRI', INFOT, NOUT, LERR, OK )
181 CALL ZSYTRI2( '/', 0, A, 1, IP, W, 1, INFO )
182 CALL CHKXER( 'ZSYTRI2', INFOT, NOUT, LERR, OK )
184 CALL ZSYTRI2( 'U', -1, A, 1, IP, W, 1, INFO )
185 CALL CHKXER( 'ZSYTRI2', INFOT, NOUT, LERR, OK )
187 CALL ZSYTRI2( 'U', 2, A, 1, IP, W, 1, INFO )
188 CALL CHKXER( 'ZSYTRI2', INFOT, NOUT, LERR, OK )
194 CALL ZSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
195 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
197 CALL ZSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
198 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
200 CALL ZSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
201 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
203 CALL ZSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
204 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
206 CALL ZSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
207 CALL CHKXER( 'ZSYTRS', INFOT, NOUT, LERR, OK )
213 CALL ZSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
215 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
217 CALL ZSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
219 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
221 CALL ZSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
223 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
225 CALL ZSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
227 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
229 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
231 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
233 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
235 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
237 CALL ZSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
239 CALL CHKXER( 'ZSYRFS', INFOT, NOUT, LERR, OK )
245 CALL ZSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
246 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
248 CALL ZSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
249 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
251 CALL ZSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
252 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
254 CALL ZSYCON( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
255 CALL CHKXER( 'ZSYCON', INFOT, NOUT, LERR, OK )
257 * Test error exits of the routines that use factorization
258 * of a symmetric indefinite matrix with "rook"
259 * (bounded Bunch-Kaufman) diagonal pivoting method.
261 ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
265 SRNAMT = 'ZSYTRF_ROOK'
267 CALL ZSYTRF_ROOK( '/', 0, A, 1, IP, W, 1, INFO )
268 CALL CHKXER( 'ZSYTRF_ROOK', INFOT, NOUT, LERR, OK )
270 CALL ZSYTRF_ROOK( 'U', -1, A, 1, IP, W, 1, INFO )
271 CALL CHKXER( 'ZSYTRF_ROOK', INFOT, NOUT, LERR, OK )
273 CALL ZSYTRF_ROOK( 'U', 2, A, 1, IP, W, 4, INFO )
274 CALL CHKXER( 'ZSYTRF_ROOK', INFOT, NOUT, LERR, OK )
278 SRNAMT = 'ZSYTF2_ROOK'
280 CALL ZSYTF2_ROOK( '/', 0, A, 1, IP, INFO )
281 CALL CHKXER( 'ZSYTF2_ROOK', INFOT, NOUT, LERR, OK )
283 CALL ZSYTF2_ROOK( 'U', -1, A, 1, IP, INFO )
284 CALL CHKXER( 'ZSYTF2_ROOK', INFOT, NOUT, LERR, OK )
286 CALL ZSYTF2_ROOK( 'U', 2, A, 1, IP, INFO )
287 CALL CHKXER( 'ZSYTF2_ROOK', INFOT, NOUT, LERR, OK )
291 SRNAMT = 'ZSYTRI_ROOK'
293 CALL ZSYTRI_ROOK( '/', 0, A, 1, IP, W, INFO )
294 CALL CHKXER( 'ZSYTRI_ROOK', INFOT, NOUT, LERR, OK )
296 CALL ZSYTRI_ROOK( 'U', -1, A, 1, IP, W, INFO )
297 CALL CHKXER( 'ZSYTRI_ROOK', INFOT, NOUT, LERR, OK )
299 CALL ZSYTRI_ROOK( 'U', 2, A, 1, IP, W, INFO )
300 CALL CHKXER( 'ZSYTRI_ROOK', INFOT, NOUT, LERR, OK )
304 SRNAMT = 'ZSYTRS_ROOK'
306 CALL ZSYTRS_ROOK( '/', 0, 0, A, 1, IP, B, 1, INFO )
307 CALL CHKXER( 'ZSYTRS_ROOK', INFOT, NOUT, LERR, OK )
309 CALL ZSYTRS_ROOK( 'U', -1, 0, A, 1, IP, B, 1, INFO )
310 CALL CHKXER( 'ZSYTRS_ROOK', INFOT, NOUT, LERR, OK )
312 CALL ZSYTRS_ROOK( 'U', 0, -1, A, 1, IP, B, 1, INFO )
313 CALL CHKXER( 'ZSYTRS_ROOK', INFOT, NOUT, LERR, OK )
315 CALL ZSYTRS_ROOK( 'U', 2, 1, A, 1, IP, B, 2, INFO )
316 CALL CHKXER( 'ZSYTRS_ROOK', INFOT, NOUT, LERR, OK )
318 CALL ZSYTRS_ROOK( 'U', 2, 1, A, 2, IP, B, 1, INFO )
319 CALL CHKXER( 'ZSYTRS_ROOK', INFOT, NOUT, LERR, OK )
323 SRNAMT = 'ZSYCON_ROOK'
325 CALL ZSYCON_ROOK( '/', 0, A, 1, IP, ANRM, RCOND, W, INFO )
326 CALL CHKXER( 'ZSYCON_ROOK', INFOT, NOUT, LERR, OK )
328 CALL ZSYCON_ROOK( 'U', -1, A, 1, IP, ANRM, RCOND, W, INFO )
329 CALL CHKXER( 'ZSYCON_ROOK', INFOT, NOUT, LERR, OK )
331 CALL ZSYCON_ROOK( 'U', 2, A, 1, IP, ANRM, RCOND, W, INFO )
332 CALL CHKXER( 'ZSYCON_ROOK', INFOT, NOUT, LERR, OK )
334 CALL ZSYCON_ROOK( 'U', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
335 CALL CHKXER( 'ZSYCON_ROOK', INFOT, NOUT, LERR, OK )
337 * Test error exits of the routines that use factorization
338 * of a symmetric indefinite packed matrix with patrial
339 * (Bunch-Kaufman) pivoting.
341 ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
347 CALL ZSPTRF( '/', 0, A, IP, INFO )
348 CALL CHKXER( 'ZSPTRF', INFOT, NOUT, LERR, OK )
350 CALL ZSPTRF( 'U', -1, A, IP, INFO )
351 CALL CHKXER( 'ZSPTRF', INFOT, NOUT, LERR, OK )
357 CALL ZSPTRI( '/', 0, A, IP, W, INFO )
358 CALL CHKXER( 'ZSPTRI', INFOT, NOUT, LERR, OK )
360 CALL ZSPTRI( 'U', -1, A, IP, W, INFO )
361 CALL CHKXER( 'ZSPTRI', INFOT, NOUT, LERR, OK )
367 CALL ZSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
368 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
370 CALL ZSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
371 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
373 CALL ZSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
374 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
376 CALL ZSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
377 CALL CHKXER( 'ZSPTRS', INFOT, NOUT, LERR, OK )
383 CALL ZSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
385 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
387 CALL ZSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
389 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
391 CALL ZSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
393 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
395 CALL ZSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
397 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
399 CALL ZSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
401 CALL CHKXER( 'ZSPRFS', INFOT, NOUT, LERR, OK )
407 CALL ZSPCON( '/', 0, A, IP, ANRM, RCOND, W, INFO )
408 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
410 CALL ZSPCON( 'U', -1, A, IP, ANRM, RCOND, W, INFO )
411 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
413 CALL ZSPCON( 'U', 1, A, IP, -ANRM, RCOND, W, INFO )
414 CALL CHKXER( 'ZSPCON', INFOT, NOUT, LERR, OK )
417 * Print a summary line.
419 CALL ALAESM( PATH, OK, NOUT )