LAPACK  3.10.1
LAPACK: Linear Algebra PACKage
zerrhe.f
Go to the documentation of this file.
1 *> \brief \b ZERRHE
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 ZERRHE( 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 *> ZERRHE tests the error exits for the COMPLEX*16 routines
25 *> for Hermitian indefinite 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 complex16_lin
52 *
53 * =====================================================================
54  SUBROUTINE zerrhe( 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 *
68 * .. Parameters ..
69  INTEGER NMAX
70  parameter( nmax = 4 )
71 * ..
72 * .. Local Scalars ..
73  CHARACTER*2 C2
74  INTEGER I, INFO, J
75  DOUBLE PRECISION ANRM, RCOND
76 * ..
77 * .. Local Arrays ..
78  INTEGER IP( NMAX )
79  DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX )
80  COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
81  $ E( NMAX ), W( 2*NMAX ), X( NMAX )
82 * ..
83 * .. External Functions ..
84  LOGICAL LSAMEN
85  EXTERNAL lsamen
86 * ..
87 * .. External Subroutines ..
95  $ zhptrf, zhptri, zhptrs
96 * ..
97 * .. Scalars in Common ..
98  LOGICAL LERR, OK
99  CHARACTER*32 SRNAMT
100  INTEGER INFOT, NOUT
101 * ..
102 * .. Common blocks ..
103  COMMON / infoc / infot, nout, ok, lerr
104  COMMON / srnamc / srnamt
105 * ..
106 * .. Intrinsic Functions ..
107  INTRINSIC dble, dcmplx
108 * ..
109 * .. Executable Statements ..
110 *
111  nout = nunit
112  WRITE( nout, fmt = * )
113  c2 = path( 2: 3 )
114 *
115 * Set the variables to innocuous values.
116 *
117  DO 20 j = 1, nmax
118  DO 10 i = 1, nmax
119  a( i, j ) = dcmplx( 1.d0 / dble( i+j ),
120  $ -1.d0 / dble( i+j ) )
121  af( i, j ) = dcmplx( 1.d0 / dble( i+j ),
122  $ -1.d0 / dble( i+j ) )
123  10 CONTINUE
124  b( j ) = 0.d0
125  e( j ) = 0.d0
126  r1( j ) = 0.d0
127  r2( j ) = 0.d0
128  w( j ) = 0.d0
129  x( j ) = 0.d0
130  ip( j ) = j
131  20 CONTINUE
132  anrm = 1.0d0
133  ok = .true.
134 *
135  IF( lsamen( 2, c2, 'HE' ) ) THEN
136 *
137 * Test error exits of the routines that use factorization
138 * of a Hermitian indefinite matrix with patrial
139 * (Bunch-Kaufman) diagonal pivoting method.
140 *
141 * ZHETRF
142 *
143  srnamt = 'ZHETRF'
144  infot = 1
145  CALL zhetrf( '/', 0, a, 1, ip, w, 1, info )
146  CALL chkxer( 'ZHETRF', infot, nout, lerr, ok )
147  infot = 2
148  CALL zhetrf( 'U', -1, a, 1, ip, w, 1, info )
149  CALL chkxer( 'ZHETRF', infot, nout, lerr, ok )
150  infot = 4
151  CALL zhetrf( 'U', 2, a, 1, ip, w, 4, info )
152  CALL chkxer( 'ZHETRF', infot, nout, lerr, ok )
153  infot = 7
154  CALL zhetrf( 'U', 0, a, 1, ip, w, 0, info )
155  CALL chkxer( 'ZHETRF', infot, nout, lerr, ok )
156  infot = 7
157  CALL zhetrf( 'U', 0, a, 1, ip, w, -2, info )
158  CALL chkxer( 'ZHETRF', infot, nout, lerr, ok )
159 *
160 * ZHETF2
161 *
162  srnamt = 'ZHETF2'
163  infot = 1
164  CALL zhetf2( '/', 0, a, 1, ip, info )
165  CALL chkxer( 'ZHETF2', infot, nout, lerr, ok )
166  infot = 2
167  CALL zhetf2( 'U', -1, a, 1, ip, info )
168  CALL chkxer( 'ZHETF2', infot, nout, lerr, ok )
169  infot = 4
170  CALL zhetf2( 'U', 2, a, 1, ip, info )
171  CALL chkxer( 'ZHETF2', infot, nout, lerr, ok )
172 *
173 * ZHETRI
174 *
175  srnamt = 'ZHETRI'
176  infot = 1
177  CALL zhetri( '/', 0, a, 1, ip, w, info )
178  CALL chkxer( 'ZHETRI', infot, nout, lerr, ok )
179  infot = 2
180  CALL zhetri( 'U', -1, a, 1, ip, w, info )
181  CALL chkxer( 'ZHETRI', infot, nout, lerr, ok )
182  infot = 4
183  CALL zhetri( 'U', 2, a, 1, ip, w, info )
184  CALL chkxer( 'ZHETRI', infot, nout, lerr, ok )
185 *
186 * ZHETRI2
187 *
188  srnamt = 'ZHETRI2'
189  infot = 1
190  CALL zhetri2( '/', 0, a, 1, ip, w, 1, info )
191  CALL chkxer( 'ZHETRI2', infot, nout, lerr, ok )
192  infot = 2
193  CALL zhetri2( 'U', -1, a, 1, ip, w, 1, info )
194  CALL chkxer( 'ZHETRI2', infot, nout, lerr, ok )
195  infot = 4
196  CALL zhetri2( 'U', 2, a, 1, ip, w, 1, info )
197  CALL chkxer( 'ZHETRI2', infot, nout, lerr, ok )
198 *
199 * ZHETRI2X
200 *
201  srnamt = 'ZHETRI2X'
202  infot = 1
203  CALL zhetri2x( '/', 0, a, 1, ip, w, 1, info )
204  CALL chkxer( 'ZHETRI2X', infot, nout, lerr, ok )
205  infot = 2
206  CALL zhetri2x( 'U', -1, a, 1, ip, w, 1, info )
207  CALL chkxer( 'ZHETRI2X', infot, nout, lerr, ok )
208  infot = 4
209  CALL zhetri2x( 'U', 2, a, 1, ip, w, 1, info )
210  CALL chkxer( 'ZHETRI2X', infot, nout, lerr, ok )
211 *
212 * ZHETRS
213 *
214  srnamt = 'ZHETRS'
215  infot = 1
216  CALL zhetrs( '/', 0, 0, a, 1, ip, b, 1, info )
217  CALL chkxer( 'ZHETRS', infot, nout, lerr, ok )
218  infot = 2
219  CALL zhetrs( 'U', -1, 0, a, 1, ip, b, 1, info )
220  CALL chkxer( 'ZHETRS', infot, nout, lerr, ok )
221  infot = 3
222  CALL zhetrs( 'U', 0, -1, a, 1, ip, b, 1, info )
223  CALL chkxer( 'ZHETRS', infot, nout, lerr, ok )
224  infot = 5
225  CALL zhetrs( 'U', 2, 1, a, 1, ip, b, 2, info )
226  CALL chkxer( 'ZHETRS', infot, nout, lerr, ok )
227  infot = 8
228  CALL zhetrs( 'U', 2, 1, a, 2, ip, b, 1, info )
229  CALL chkxer( 'ZHETRS', infot, nout, lerr, ok )
230 *
231 * ZHERFS
232 *
233  srnamt = 'ZHERFS'
234  infot = 1
235  CALL zherfs( '/', 0, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2, w,
236  $ r, info )
237  CALL chkxer( 'ZHERFS', infot, nout, lerr, ok )
238  infot = 2
239  CALL zherfs( 'U', -1, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
240  $ w, r, info )
241  CALL chkxer( 'ZHERFS', infot, nout, lerr, ok )
242  infot = 3
243  CALL zherfs( 'U', 0, -1, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
244  $ w, r, info )
245  CALL chkxer( 'ZHERFS', infot, nout, lerr, ok )
246  infot = 5
247  CALL zherfs( 'U', 2, 1, a, 1, af, 2, ip, b, 2, x, 2, r1, r2, w,
248  $ r, info )
249  CALL chkxer( 'ZHERFS', infot, nout, lerr, ok )
250  infot = 7
251  CALL zherfs( 'U', 2, 1, a, 2, af, 1, ip, b, 2, x, 2, r1, r2, w,
252  $ r, info )
253  CALL chkxer( 'ZHERFS', infot, nout, lerr, ok )
254  infot = 10
255  CALL zherfs( 'U', 2, 1, a, 2, af, 2, ip, b, 1, x, 2, r1, r2, w,
256  $ r, info )
257  CALL chkxer( 'ZHERFS', infot, nout, lerr, ok )
258  infot = 12
259  CALL zherfs( 'U', 2, 1, a, 2, af, 2, ip, b, 2, x, 1, r1, r2, w,
260  $ r, info )
261  CALL chkxer( 'ZHERFS', infot, nout, lerr, ok )
262 *
263 * ZHECON
264 *
265  srnamt = 'ZHECON'
266  infot = 1
267  CALL zhecon( '/', 0, a, 1, ip, anrm, rcond, w, info )
268  CALL chkxer( 'ZHECON', infot, nout, lerr, ok )
269  infot = 2
270  CALL zhecon( 'U', -1, a, 1, ip, anrm, rcond, w, info )
271  CALL chkxer( 'ZHECON', infot, nout, lerr, ok )
272  infot = 4
273  CALL zhecon( 'U', 2, a, 1, ip, anrm, rcond, w, info )
274  CALL chkxer( 'ZHECON', infot, nout, lerr, ok )
275  infot = 6
276  CALL zhecon( 'U', 1, a, 1, ip, -anrm, rcond, w, info )
277  CALL chkxer( 'ZHECON', infot, nout, lerr, ok )
278 *
279  ELSE IF( lsamen( 2, c2, 'HR' ) ) THEN
280 *
281 * Test error exits of the routines that use factorization
282 * of a Hermitian indefinite matrix with rook
283 * (bounded Bunch-Kaufman) diagonal pivoting method.
284 *
285 * ZHETRF_ROOK
286 *
287  srnamt = 'ZHETRF_ROOK'
288  infot = 1
289  CALL zhetrf_rook( '/', 0, a, 1, ip, w, 1, info )
290  CALL chkxer( 'ZHETRF_ROOK', infot, nout, lerr, ok )
291  infot = 2
292  CALL zhetrf_rook( 'U', -1, a, 1, ip, w, 1, info )
293  CALL chkxer( 'ZHETRF_ROOK', infot, nout, lerr, ok )
294  infot = 4
295  CALL zhetrf_rook( 'U', 2, a, 1, ip, w, 4, info )
296  CALL chkxer( 'ZHETRF_ROOK', infot, nout, lerr, ok )
297  infot = 7
298  CALL zhetrf_rook( 'U', 0, a, 1, ip, w, 0, info )
299  CALL chkxer( 'ZHETRF_ROOK', infot, nout, lerr, ok )
300  infot = 7
301  CALL zhetrf_rook( 'U', 0, a, 1, ip, w, -2, info )
302  CALL chkxer( 'ZHETRF_ROOK', infot, nout, lerr, ok )
303 *
304 * ZHETF2_ROOK
305 *
306  srnamt = 'ZHETF2_ROOK'
307  infot = 1
308  CALL zhetf2_rook( '/', 0, a, 1, ip, info )
309  CALL chkxer( 'ZHETF2_ROOK', infot, nout, lerr, ok )
310  infot = 2
311  CALL zhetf2_rook( 'U', -1, a, 1, ip, info )
312  CALL chkxer( 'ZHETF2_ROOK', infot, nout, lerr, ok )
313  infot = 4
314  CALL zhetf2_rook( 'U', 2, a, 1, ip, info )
315  CALL chkxer( 'ZHETF2_ROOK', infot, nout, lerr, ok )
316 *
317 * ZHETRI_ROOK
318 *
319  srnamt = 'ZHETRI_ROOK'
320  infot = 1
321  CALL zhetri_rook( '/', 0, a, 1, ip, w, info )
322  CALL chkxer( 'ZHETRI_ROOK', infot, nout, lerr, ok )
323  infot = 2
324  CALL zhetri_rook( 'U', -1, a, 1, ip, w, info )
325  CALL chkxer( 'ZHETRI_ROOK', infot, nout, lerr, ok )
326  infot = 4
327  CALL zhetri_rook( 'U', 2, a, 1, ip, w, info )
328  CALL chkxer( 'ZHETRI_ROOK', infot, nout, lerr, ok )
329 *
330 * ZHETRS_ROOK
331 *
332  srnamt = 'ZHETRS_ROOK'
333  infot = 1
334  CALL zhetrs_rook( '/', 0, 0, a, 1, ip, b, 1, info )
335  CALL chkxer( 'ZHETRS_ROOK', infot, nout, lerr, ok )
336  infot = 2
337  CALL zhetrs_rook( 'U', -1, 0, a, 1, ip, b, 1, info )
338  CALL chkxer( 'ZHETRS_ROOK', infot, nout, lerr, ok )
339  infot = 3
340  CALL zhetrs_rook( 'U', 0, -1, a, 1, ip, b, 1, info )
341  CALL chkxer( 'ZHETRS_ROOK', infot, nout, lerr, ok )
342  infot = 5
343  CALL zhetrs_rook( 'U', 2, 1, a, 1, ip, b, 2, info )
344  CALL chkxer( 'ZHETRS_ROOK', infot, nout, lerr, ok )
345  infot = 8
346  CALL zhetrs_rook( 'U', 2, 1, a, 2, ip, b, 1, info )
347  CALL chkxer( 'ZHETRS_ROOK', infot, nout, lerr, ok )
348 *
349 * ZHECON_ROOK
350 *
351  srnamt = 'ZHECON_ROOK'
352  infot = 1
353  CALL zhecon_rook( '/', 0, a, 1, ip, anrm, rcond, w, info )
354  CALL chkxer( 'ZHECON_ROOK', infot, nout, lerr, ok )
355  infot = 2
356  CALL zhecon_rook( 'U', -1, a, 1, ip, anrm, rcond, w, info )
357  CALL chkxer( 'ZHECON_ROOK', infot, nout, lerr, ok )
358  infot = 4
359  CALL zhecon_rook( 'U', 2, a, 1, ip, anrm, rcond, w, info )
360  CALL chkxer( 'ZHECON_ROOK', infot, nout, lerr, ok )
361  infot = 6
362  CALL zhecon_rook( 'U', 1, a, 1, ip, -anrm, rcond, w, info )
363  CALL chkxer( 'ZHECON_ROOK', infot, nout, lerr, ok )
364 *
365  ELSE IF( lsamen( 2, c2, 'HK' ) ) THEN
366 *
367 * Test error exits of the routines that use factorization
368 * of a symmetric indefinite matrix with rook
369 * (bounded Bunch-Kaufman) pivoting with the new storage
370 * format for factors L ( or U) and D.
371 *
372 * L (or U) is stored in A, diagonal of D is stored on the
373 * diagonal of A, subdiagonal of D is stored in a separate array E.
374 *
375 * ZHETRF_RK
376 *
377  srnamt = 'ZHETRF_RK'
378  infot = 1
379  CALL zhetrf_rk( '/', 0, a, 1, e, ip, w, 1, info )
380  CALL chkxer( 'ZHETRF_RK', infot, nout, lerr, ok )
381  infot = 2
382  CALL zhetrf_rk( 'U', -1, a, 1, e, ip, w, 1, info )
383  CALL chkxer( 'ZHETRF_RK', infot, nout, lerr, ok )
384  infot = 4
385  CALL zhetrf_rk( 'U', 2, a, 1, e, ip, w, 4, info )
386  CALL chkxer( 'ZHETRF_RK', infot, nout, lerr, ok )
387  infot = 8
388  CALL zhetrf_rk( 'U', 0, a, 1, e, ip, w, 0, info )
389  CALL chkxer( 'ZHETRF_RK', infot, nout, lerr, ok )
390  infot = 8
391  CALL zhetrf_rk( 'U', 0, a, 1, e, ip, w, -2, info )
392  CALL chkxer( 'ZHETRF_RK', infot, nout, lerr, ok )
393 *
394 * ZHETF2_RK
395 *
396  srnamt = 'ZHETF2_RK'
397  infot = 1
398  CALL zhetf2_rk( '/', 0, a, 1, e, ip, info )
399  CALL chkxer( 'ZHETF2_RK', infot, nout, lerr, ok )
400  infot = 2
401  CALL zhetf2_rk( 'U', -1, a, 1, e, ip, info )
402  CALL chkxer( 'ZHETF2_RK', infot, nout, lerr, ok )
403  infot = 4
404  CALL zhetf2_rk( 'U', 2, a, 1, e, ip, info )
405  CALL chkxer( 'ZHETF2_RK', infot, nout, lerr, ok )
406 *
407 * ZHETRI_3
408 *
409  srnamt = 'ZHETRI_3'
410  infot = 1
411  CALL zhetri_3( '/', 0, a, 1, e, ip, w, 1, info )
412  CALL chkxer( 'ZHETRI_3', infot, nout, lerr, ok )
413  infot = 2
414  CALL zhetri_3( 'U', -1, a, 1, e, ip, w, 1, info )
415  CALL chkxer( 'ZHETRI_3', infot, nout, lerr, ok )
416  infot = 4
417  CALL zhetri_3( 'U', 2, a, 1, e, ip, w, 1, info )
418  CALL chkxer( 'ZHETRI_3', infot, nout, lerr, ok )
419  infot = 8
420  CALL zhetri_3( 'U', 0, a, 1, e, ip, w, 0, info )
421  CALL chkxer( 'ZHETRI_3', infot, nout, lerr, ok )
422  infot = 8
423  CALL zhetri_3( 'U', 0, a, 1, e, ip, w, -2, info )
424  CALL chkxer( 'ZHETRI_3', infot, nout, lerr, ok )
425 *
426 * ZHETRI_3X
427 *
428  srnamt = 'ZHETRI_3X'
429  infot = 1
430  CALL zhetri_3x( '/', 0, a, 1, e, ip, w, 1, info )
431  CALL chkxer( 'ZHETRI_3X', infot, nout, lerr, ok )
432  infot = 2
433  CALL zhetri_3x( 'U', -1, a, 1, e, ip, w, 1, info )
434  CALL chkxer( 'ZHETRI_3X', infot, nout, lerr, ok )
435  infot = 4
436  CALL zhetri_3x( 'U', 2, a, 1, e, ip, w, 1, info )
437  CALL chkxer( 'ZHETRI_3X', infot, nout, lerr, ok )
438 *
439 * ZHETRS_3
440 *
441  srnamt = 'ZHETRS_3'
442  infot = 1
443  CALL zhetrs_3( '/', 0, 0, a, 1, e, ip, b, 1, info )
444  CALL chkxer( 'ZHETRS_3', infot, nout, lerr, ok )
445  infot = 2
446  CALL zhetrs_3( 'U', -1, 0, a, 1, e, ip, b, 1, info )
447  CALL chkxer( 'ZHETRS_3', infot, nout, lerr, ok )
448  infot = 3
449  CALL zhetrs_3( 'U', 0, -1, a, 1, e, ip, b, 1, info )
450  CALL chkxer( 'ZHETRS_3', infot, nout, lerr, ok )
451  infot = 5
452  CALL zhetrs_3( 'U', 2, 1, a, 1, e, ip, b, 2, info )
453  CALL chkxer( 'ZHETRS_3', infot, nout, lerr, ok )
454  infot = 9
455  CALL zhetrs_3( 'U', 2, 1, a, 2, e, ip, b, 1, info )
456  CALL chkxer( 'ZHETRS_3', infot, nout, lerr, ok )
457 *
458 * ZHECON_3
459 *
460  srnamt = 'ZHECON_3'
461  infot = 1
462  CALL zhecon_3( '/', 0, a, 1, e, ip, anrm, rcond, w, info )
463  CALL chkxer( 'ZHECON_3', infot, nout, lerr, ok )
464  infot = 2
465  CALL zhecon_3( 'U', -1, a, 1, e, ip, anrm, rcond, w, info )
466  CALL chkxer( 'ZHECON_3', infot, nout, lerr, ok )
467  infot = 4
468  CALL zhecon_3( 'U', 2, a, 1, e, ip, anrm, rcond, w, info )
469  CALL chkxer( 'ZHECON_3', infot, nout, lerr, ok )
470  infot = 7
471  CALL zhecon_3( 'U', 1, a, 1, e, ip, -1.0d0, rcond, w, info)
472  CALL chkxer( 'ZHECON_3', infot, nout, lerr, ok )
473 *
474 * Test error exits of the routines that use factorization
475 * of a Hermitian indefinite matrix with Aasen's algorithm.
476 *
477  ELSE IF( lsamen( 2, c2, 'HA' ) ) THEN
478 *
479 * ZHETRF_AA
480 *
481  srnamt = 'ZHETRF_AA'
482  infot = 1
483  CALL zhetrf_aa( '/', 0, a, 1, ip, w, 1, info )
484  CALL chkxer( 'ZHETRF_AA', infot, nout, lerr, ok )
485  infot = 2
486  CALL zhetrf_aa( 'U', -1, a, 1, ip, w, 1, info )
487  CALL chkxer( 'ZHETRF_AA', infot, nout, lerr, ok )
488  infot = 4
489  CALL zhetrf_aa( 'U', 2, a, 1, ip, w, 4, info )
490  CALL chkxer( 'ZHETRF_AA', infot, nout, lerr, ok )
491  infot = 7
492  CALL zhetrf_aa( 'U', 0, a, 1, ip, w, 0, info )
493  CALL chkxer( 'ZHETRF_AA', infot, nout, lerr, ok )
494  infot = 7
495  CALL zhetrf_aa( 'U', 0, a, 1, ip, w, -2, info )
496  CALL chkxer( 'ZHETRF_AA', infot, nout, lerr, ok )
497 *
498 * ZHETRS_AA
499 *
500  srnamt = 'ZHETRS_AA'
501  infot = 1
502  CALL zhetrs_aa( '/', 0, 0, a, 1, ip, b, 1, w, 1, info )
503  CALL chkxer( 'ZHETRS_AA', infot, nout, lerr, ok )
504  infot = 2
505  CALL zhetrs_aa( 'U', -1, 0, a, 1, ip, b, 1, w, 1, info )
506  CALL chkxer( 'ZHETRS_AA', infot, nout, lerr, ok )
507  infot = 3
508  CALL zhetrs_aa( 'U', 0, -1, a, 1, ip, b, 1, w, 1, info )
509  CALL chkxer( 'ZHETRS_AA', infot, nout, lerr, ok )
510  infot = 5
511  CALL zhetrs_aa( 'U', 2, 1, a, 1, ip, b, 2, w, 1, info )
512  CALL chkxer( 'ZHETRS_AA', infot, nout, lerr, ok )
513  infot = 8
514  CALL zhetrs_aa( 'U', 2, 1, a, 2, ip, b, 1, w, 1, info )
515  CALL chkxer( 'ZHETRS_AA', infot, nout, lerr, ok )
516  infot = 10
517  CALL zhetrs_aa( 'U', 0, 1, a, 1, ip, b, 1, w, 0, info )
518  CALL chkxer( 'ZHETRS_AA', infot, nout, lerr, ok )
519  infot = 10
520  CALL zhetrs_aa( 'U', 0, 1, a, 1, ip, b, 1, w, -2, info )
521  CALL chkxer( 'ZHETRS_AA', infot, nout, lerr, ok )
522 *
523  ELSE IF( lsamen( 2, c2, 'S2' ) ) THEN
524 *
525 * Test error exits of the routines that use factorization
526 * of a symmetric indefinite matrix with Aasen's algorithm.
527 *
528 * ZHETRF_AA_2STAGE
529 *
530  srnamt = 'ZHETRF_AA_2STAGE'
531  infot = 1
532  CALL zhetrf_aa_2stage( '/', 0, a, 1, a, 1, ip, ip, w, 1,
533  $ info )
534  CALL chkxer( 'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
535  infot = 2
536  CALL zhetrf_aa_2stage( 'U', -1, a, 1, a, 1, ip, ip, w, 1,
537  $ info )
538  CALL chkxer( 'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
539  infot = 4
540  CALL zhetrf_aa_2stage( 'U', 2, a, 1, a, 2, ip, ip, w, 1,
541  $ info )
542  CALL chkxer( 'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
543  infot = 6
544  CALL zhetrf_aa_2stage( 'U', 2, a, 2, a, 1, ip, ip, w, 1,
545  $ info )
546  CALL chkxer( 'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
547  infot = 10
548  CALL zhetrf_aa_2stage( 'U', 2, a, 2, a, 8, ip, ip, w, 0,
549  $ info )
550  CALL chkxer( 'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
551 *
552 * ZHETRS_AA_2STAGE
553 *
554  srnamt = 'ZHETRS_AA_2STAGE'
555  infot = 1
556  CALL zhetrs_aa_2stage( '/', 0, 0, a, 1, a, 1, ip, ip,
557  $ b, 1, info )
558  CALL chkxer( 'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
559  infot = 2
560  CALL zhetrs_aa_2stage( 'U', -1, 0, a, 1, a, 1, ip, ip,
561  $ b, 1, info )
562  CALL chkxer( 'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
563  infot = 3
564  CALL zhetrs_aa_2stage( 'U', 0, -1, a, 1, a, 1, ip, ip,
565  $ b, 1, info )
566  CALL chkxer( 'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
567  infot = 5
568  CALL zhetrs_aa_2stage( 'U', 2, 1, a, 1, a, 1, ip, ip,
569  $ b, 1, info )
570  CALL chkxer( 'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
571  infot = 7
572  CALL zhetrs_aa_2stage( 'U', 2, 1, a, 2, a, 1, ip, ip,
573  $ b, 1, info )
574  CALL chkxer( 'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
575  infot = 11
576  CALL zhetrs_aa_2stage( 'U', 2, 1, a, 2, a, 8, ip, ip,
577  $ b, 1, info )
578  CALL chkxer( 'ZHETRS_AA_STAGE', infot, nout, lerr, ok )
579 *
580  ELSE IF( lsamen( 2, c2, 'HP' ) ) THEN
581 *
582 * Test error exits of the routines that use factorization
583 * of a Hermitian indefinite packed matrix with patrial
584 * (Bunch-Kaufman) diagonal pivoting method.
585 *
586 * ZHPTRF
587 *
588  srnamt = 'ZHPTRF'
589  infot = 1
590  CALL zhptrf( '/', 0, a, ip, info )
591  CALL chkxer( 'ZHPTRF', infot, nout, lerr, ok )
592  infot = 2
593  CALL zhptrf( 'U', -1, a, ip, info )
594  CALL chkxer( 'ZHPTRF', infot, nout, lerr, ok )
595 *
596 * ZHPTRI
597 *
598  srnamt = 'ZHPTRI'
599  infot = 1
600  CALL zhptri( '/', 0, a, ip, w, info )
601  CALL chkxer( 'ZHPTRI', infot, nout, lerr, ok )
602  infot = 2
603  CALL zhptri( 'U', -1, a, ip, w, info )
604  CALL chkxer( 'ZHPTRI', infot, nout, lerr, ok )
605 *
606 * ZHPTRS
607 *
608  srnamt = 'ZHPTRS'
609  infot = 1
610  CALL zhptrs( '/', 0, 0, a, ip, b, 1, info )
611  CALL chkxer( 'ZHPTRS', infot, nout, lerr, ok )
612  infot = 2
613  CALL zhptrs( 'U', -1, 0, a, ip, b, 1, info )
614  CALL chkxer( 'ZHPTRS', infot, nout, lerr, ok )
615  infot = 3
616  CALL zhptrs( 'U', 0, -1, a, ip, b, 1, info )
617  CALL chkxer( 'ZHPTRS', infot, nout, lerr, ok )
618  infot = 7
619  CALL zhptrs( 'U', 2, 1, a, ip, b, 1, info )
620  CALL chkxer( 'ZHPTRS', infot, nout, lerr, ok )
621 *
622 * ZHPRFS
623 *
624  srnamt = 'ZHPRFS'
625  infot = 1
626  CALL zhprfs( '/', 0, 0, a, af, ip, b, 1, x, 1, r1, r2, w, r,
627  $ info )
628  CALL chkxer( 'ZHPRFS', infot, nout, lerr, ok )
629  infot = 2
630  CALL zhprfs( 'U', -1, 0, a, af, ip, b, 1, x, 1, r1, r2, w, r,
631  $ info )
632  CALL chkxer( 'ZHPRFS', infot, nout, lerr, ok )
633  infot = 3
634  CALL zhprfs( 'U', 0, -1, a, af, ip, b, 1, x, 1, r1, r2, w, r,
635  $ info )
636  CALL chkxer( 'ZHPRFS', infot, nout, lerr, ok )
637  infot = 8
638  CALL zhprfs( 'U', 2, 1, a, af, ip, b, 1, x, 2, r1, r2, w, r,
639  $ info )
640  CALL chkxer( 'ZHPRFS', infot, nout, lerr, ok )
641  infot = 10
642  CALL zhprfs( 'U', 2, 1, a, af, ip, b, 2, x, 1, r1, r2, w, r,
643  $ info )
644  CALL chkxer( 'ZHPRFS', infot, nout, lerr, ok )
645 *
646 * ZHPCON
647 *
648  srnamt = 'ZHPCON'
649  infot = 1
650  CALL zhpcon( '/', 0, a, ip, anrm, rcond, w, info )
651  CALL chkxer( 'ZHPCON', infot, nout, lerr, ok )
652  infot = 2
653  CALL zhpcon( 'U', -1, a, ip, anrm, rcond, w, info )
654  CALL chkxer( 'ZHPCON', infot, nout, lerr, ok )
655  infot = 5
656  CALL zhpcon( 'U', 1, a, ip, -anrm, rcond, w, info )
657  CALL chkxer( 'ZHPCON', infot, nout, lerr, ok )
658  END IF
659 *
660 * Print a summary line.
661 *
662  CALL alaesm( path, ok, nout )
663 *
664  RETURN
665 *
666 * End of ZERRHE
667 *
668  END
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
Definition: cblat2.f:3196
subroutine alaesm(PATH, OK, NOUT)
ALAESM
Definition: alaesm.f:63
subroutine zerrhe(PATH, NUNIT)
ZERRHE
Definition: zerrhe.f:55
subroutine zhetri_3(UPLO, N, A, LDA, E, IPIV, WORK, LWORK, INFO)
ZHETRI_3
Definition: zhetri_3.f:170
subroutine zherfs(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZHERFS
Definition: zherfs.f:192
subroutine zhetf2(UPLO, N, A, LDA, IPIV, INFO)
ZHETF2 computes the factorization of a complex Hermitian matrix, using the diagonal pivoting method (...
Definition: zhetf2.f:191
subroutine zhecon_3(UPLO, N, A, LDA, E, IPIV, ANORM, RCOND, WORK, INFO)
ZHECON_3
Definition: zhecon_3.f:166
subroutine zhetri_rook(UPLO, N, A, LDA, IPIV, WORK, INFO)
ZHETRI_ROOK computes the inverse of HE matrix using the factorization obtained with the bounded Bunch...
Definition: zhetri_rook.f:128
subroutine zhetri(UPLO, N, A, LDA, IPIV, WORK, INFO)
ZHETRI
Definition: zhetri.f:114
subroutine zhecon(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO)
ZHECON
Definition: zhecon.f:125
subroutine zhetrf_rk(UPLO, N, A, LDA, E, IPIV, WORK, LWORK, INFO)
ZHETRF_RK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bunch...
Definition: zhetrf_rk.f:259
subroutine zhetrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRF_AA
Definition: zhetrf_aa.f:132
subroutine zhetrs_3(UPLO, N, NRHS, A, LDA, E, IPIV, B, LDB, INFO)
ZHETRS_3
Definition: zhetrs_3.f:165
subroutine zhetf2_rook(UPLO, N, A, LDA, IPIV, INFO)
ZHETF2_ROOK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bun...
Definition: zhetf2_rook.f:194
subroutine zhetri_3x(UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO)
ZHETRI_3X
Definition: zhetri_3x.f:159
subroutine zhetrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
ZHETRS_AA
Definition: zhetrs_aa.f:132
subroutine zhecon_rook(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO)
ZHECON_ROOK estimates the reciprocal of the condition number fort HE matrices using factorization obt...
Definition: zhecon_rook.f:139
subroutine zhetrs_rook(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
ZHETRS_ROOK computes the solution to a system of linear equations A * X = B for HE matrices using fac...
Definition: zhetrs_rook.f:136
subroutine zhetf2_rk(UPLO, N, A, LDA, E, IPIV, INFO)
ZHETF2_RK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bunch...
Definition: zhetf2_rk.f:241
subroutine zhetrf_rook(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRF_ROOK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bun...
Definition: zhetrf_rook.f:212
subroutine zhetri2(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRI2
Definition: zhetri2.f:127
subroutine zhetrs(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
ZHETRS
Definition: zhetrs.f:120
subroutine zhetri2x(UPLO, N, A, LDA, IPIV, WORK, NB, INFO)
ZHETRI2X
Definition: zhetri2x.f:120
subroutine zhetrf(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRF
Definition: zhetrf.f:177
subroutine zhpcon(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, INFO)
ZHPCON
Definition: zhpcon.f:118
subroutine zhptrf(UPLO, N, AP, IPIV, INFO)
ZHPTRF
Definition: zhptrf.f:159
subroutine zhptri(UPLO, N, AP, IPIV, WORK, INFO)
ZHPTRI
Definition: zhptri.f:109
subroutine zhprfs(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZHPRFS
Definition: zhprfs.f:180
subroutine zhptrs(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO)
ZHPTRS
Definition: zhptrs.f:115
subroutine zhetrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
ZHETRS_AA_2STAGE
subroutine zhetrf_aa_2stage(UPLO, N, A, LDA, TB, LTB, IPIV, IPIV2, WORK, LWORK, INFO)
ZHETRF_AA_2STAGE