56 SUBROUTINE zerrhe( PATH, NUNIT )
73 parameter ( nmax = 4 )
78 DOUBLE PRECISION ANRM, RCOND
82 DOUBLE PRECISION R( nmax ), R1( nmax ), R2( nmax )
83 COMPLEX*16 A( nmax, nmax ), AF( nmax, nmax ), B( nmax ),
84 $ e( nmax ), w( 2*nmax ), x( nmax )
105 COMMON / infoc / infot, nout, ok, lerr
106 COMMON / srnamc / srnamt
109 INTRINSIC dble, dcmplx
114 WRITE( nout, fmt = * )
121 a( i, j ) = dcmplx( 1.d0 / dble( i+j ),
122 $ -1.d0 / dble( i+j ) )
123 af( i, j ) = dcmplx( 1.d0 / dble( i+j ),
124 $ -1.d0 / dble( i+j ) )
137 IF( lsamen( 2, c2,
'HE' ) )
THEN
147 CALL zhetrf(
'/', 0, a, 1, ip, w, 1, info )
148 CALL chkxer(
'ZHETRF', infot, nout, lerr, ok )
150 CALL zhetrf(
'U', -1, a, 1, ip, w, 1, info )
151 CALL chkxer(
'ZHETRF', infot, nout, lerr, ok )
153 CALL zhetrf(
'U', 2, a, 1, ip, w, 4, info )
154 CALL chkxer(
'ZHETRF', infot, nout, lerr, ok )
156 CALL zhetrf(
'U', 0, a, 1, ip, w, 0, info )
157 CALL chkxer(
'ZHETRF', infot, nout, lerr, ok )
159 CALL zhetrf(
'U', 0, a, 1, ip, w, -2, info )
160 CALL chkxer(
'ZHETRF', infot, nout, lerr, ok )
166 CALL zhetf2(
'/', 0, a, 1, ip, info )
167 CALL chkxer(
'ZHETF2', infot, nout, lerr, ok )
169 CALL zhetf2(
'U', -1, a, 1, ip, info )
170 CALL chkxer(
'ZHETF2', infot, nout, lerr, ok )
172 CALL zhetf2(
'U', 2, a, 1, ip, info )
173 CALL chkxer(
'ZHETF2', infot, nout, lerr, ok )
179 CALL zhetri(
'/', 0, a, 1, ip, w, info )
180 CALL chkxer(
'ZHETRI', infot, nout, lerr, ok )
182 CALL zhetri(
'U', -1, a, 1, ip, w, info )
183 CALL chkxer(
'ZHETRI', infot, nout, lerr, ok )
185 CALL zhetri(
'U', 2, a, 1, ip, w, info )
186 CALL chkxer(
'ZHETRI', infot, nout, lerr, ok )
192 CALL zhetri2(
'/', 0, a, 1, ip, w, 1, info )
193 CALL chkxer(
'ZHETRI2', infot, nout, lerr, ok )
195 CALL zhetri2(
'U', -1, a, 1, ip, w, 1, info )
196 CALL chkxer(
'ZHETRI2', infot, nout, lerr, ok )
198 CALL zhetri2(
'U', 2, a, 1, ip, w, 1, info )
199 CALL chkxer(
'ZHETRI2', infot, nout, lerr, ok )
205 CALL zhetri2x(
'/', 0, a, 1, ip, w, 1, info )
206 CALL chkxer(
'ZHETRI2X', infot, nout, lerr, ok )
208 CALL zhetri2x(
'U', -1, a, 1, ip, w, 1, info )
209 CALL chkxer(
'ZHETRI2X', infot, nout, lerr, ok )
211 CALL zhetri2x(
'U', 2, a, 1, ip, w, 1, info )
212 CALL chkxer(
'ZHETRI2X', infot, nout, lerr, ok )
218 CALL zhetrs(
'/', 0, 0, a, 1, ip, b, 1, info )
219 CALL chkxer(
'ZHETRS', infot, nout, lerr, ok )
221 CALL zhetrs(
'U', -1, 0, a, 1, ip, b, 1, info )
222 CALL chkxer(
'ZHETRS', infot, nout, lerr, ok )
224 CALL zhetrs(
'U', 0, -1, a, 1, ip, b, 1, info )
225 CALL chkxer(
'ZHETRS', infot, nout, lerr, ok )
227 CALL zhetrs(
'U', 2, 1, a, 1, ip, b, 2, info )
228 CALL chkxer(
'ZHETRS', infot, nout, lerr, ok )
230 CALL zhetrs(
'U', 2, 1, a, 2, ip, b, 1, info )
231 CALL chkxer(
'ZHETRS', infot, nout, lerr, ok )
237 CALL zherfs(
'/', 0, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2, w,
239 CALL chkxer(
'ZHERFS', infot, nout, lerr, ok )
241 CALL zherfs(
'U', -1, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
243 CALL chkxer(
'ZHERFS', infot, nout, lerr, ok )
245 CALL zherfs(
'U', 0, -1, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
247 CALL chkxer(
'ZHERFS', infot, nout, lerr, ok )
249 CALL zherfs(
'U', 2, 1, a, 1, af, 2, ip, b, 2, x, 2, r1, r2, w,
251 CALL chkxer(
'ZHERFS', infot, nout, lerr, ok )
253 CALL zherfs(
'U', 2, 1, a, 2, af, 1, ip, b, 2, x, 2, r1, r2, w,
255 CALL chkxer(
'ZHERFS', infot, nout, lerr, ok )
257 CALL zherfs(
'U', 2, 1, a, 2, af, 2, ip, b, 1, x, 2, r1, r2, w,
259 CALL chkxer(
'ZHERFS', infot, nout, lerr, ok )
261 CALL zherfs(
'U', 2, 1, a, 2, af, 2, ip, b, 2, x, 1, r1, r2, w,
263 CALL chkxer(
'ZHERFS', infot, nout, lerr, ok )
269 CALL zhecon(
'/', 0, a, 1, ip, anrm, rcond, w, info )
270 CALL chkxer(
'ZHECON', infot, nout, lerr, ok )
272 CALL zhecon(
'U', -1, a, 1, ip, anrm, rcond, w, info )
273 CALL chkxer(
'ZHECON', infot, nout, lerr, ok )
275 CALL zhecon(
'U', 2, a, 1, ip, anrm, rcond, w, info )
276 CALL chkxer(
'ZHECON', infot, nout, lerr, ok )
278 CALL zhecon(
'U', 1, a, 1, ip, -anrm, rcond, w, info )
279 CALL chkxer(
'ZHECON', infot, nout, lerr, ok )
281 ELSE IF( lsamen( 2, c2,
'HR' ) )
THEN
289 srnamt =
'ZHETRF_ROOK'
292 CALL chkxer(
'ZHETRF_ROOK', infot, nout, lerr, ok )
295 CALL chkxer(
'ZHETRF_ROOK', infot, nout, lerr, ok )
298 CALL chkxer(
'ZHETRF_ROOK', infot, nout, lerr, ok )
301 CALL chkxer(
'ZHETRF_ROOK', infot, nout, lerr, ok )
304 CALL chkxer(
'ZHETRF_ROOK', infot, nout, lerr, ok )
308 srnamt =
'ZHETF2_ROOK'
311 CALL chkxer(
'ZHETF2_ROOK', infot, nout, lerr, ok )
314 CALL chkxer(
'ZHETF2_ROOK', infot, nout, lerr, ok )
317 CALL chkxer(
'ZHETF2_ROOK', infot, nout, lerr, ok )
321 srnamt =
'ZHETRI_ROOK'
324 CALL chkxer(
'ZHETRI_ROOK', infot, nout, lerr, ok )
327 CALL chkxer(
'ZHETRI_ROOK', infot, nout, lerr, ok )
330 CALL chkxer(
'ZHETRI_ROOK', infot, nout, lerr, ok )
334 srnamt =
'ZHETRS_ROOK'
336 CALL zhetrs_rook(
'/', 0, 0, a, 1, ip, b, 1, info )
337 CALL chkxer(
'ZHETRS_ROOK', infot, nout, lerr, ok )
339 CALL zhetrs_rook(
'U', -1, 0, a, 1, ip, b, 1, info )
340 CALL chkxer(
'ZHETRS_ROOK', infot, nout, lerr, ok )
342 CALL zhetrs_rook(
'U', 0, -1, a, 1, ip, b, 1, info )
343 CALL chkxer(
'ZHETRS_ROOK', infot, nout, lerr, ok )
345 CALL zhetrs_rook(
'U', 2, 1, a, 1, ip, b, 2, info )
346 CALL chkxer(
'ZHETRS_ROOK', infot, nout, lerr, ok )
348 CALL zhetrs_rook(
'U', 2, 1, a, 2, ip, b, 1, info )
349 CALL chkxer(
'ZHETRS_ROOK', infot, nout, lerr, ok )
353 srnamt =
'ZHECON_ROOK'
355 CALL zhecon_rook(
'/', 0, a, 1, ip, anrm, rcond, w, info )
356 CALL chkxer(
'ZHECON_ROOK', infot, nout, lerr, ok )
358 CALL zhecon_rook(
'U', -1, a, 1, ip, anrm, rcond, w, info )
359 CALL chkxer(
'ZHECON_ROOK', infot, nout, lerr, ok )
361 CALL zhecon_rook(
'U', 2, a, 1, ip, anrm, rcond, w, info )
362 CALL chkxer(
'ZHECON_ROOK', infot, nout, lerr, ok )
364 CALL zhecon_rook(
'U', 1, a, 1, ip, -anrm, rcond, w, info )
365 CALL chkxer(
'ZHECON_ROOK', infot, nout, lerr, ok )
367 ELSE IF( lsamen( 2, c2,
'HK' ) )
THEN
381 CALL zhetrf_rk(
'/', 0, a, 1, e, ip, w, 1, info )
382 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
384 CALL zhetrf_rk(
'U', -1, a, 1, e, ip, w, 1, info )
385 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
387 CALL zhetrf_rk(
'U', 2, a, 1, e, ip, w, 4, info )
388 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
390 CALL zhetrf_rk(
'U', 0, a, 1, e, ip, w, 0, info )
391 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
393 CALL zhetrf_rk(
'U', 0, a, 1, e, ip, w, -2, info )
394 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
400 CALL zhetf2_rk(
'/', 0, a, 1, e, ip, info )
401 CALL chkxer(
'ZHETF2_RK', infot, nout, lerr, ok )
403 CALL zhetf2_rk(
'U', -1, a, 1, e, ip, info )
404 CALL chkxer(
'ZHETF2_RK', infot, nout, lerr, ok )
406 CALL zhetf2_rk(
'U', 2, a, 1, e, ip, info )
407 CALL chkxer(
'ZHETF2_RK', infot, nout, lerr, ok )
413 CALL zhetri_3(
'/', 0, a, 1, e, ip, w, 1, info )
414 CALL chkxer(
'ZHETRI_3', infot, nout, lerr, ok )
416 CALL zhetri_3(
'U', -1, a, 1, e, ip, w, 1, info )
417 CALL chkxer(
'ZHETRI_3', infot, nout, lerr, ok )
419 CALL zhetri_3(
'U', 2, a, 1, e, ip, w, 1, info )
420 CALL chkxer(
'ZHETRI_3', infot, nout, lerr, ok )
422 CALL zhetri_3(
'U', 0, a, 1, e, ip, w, 0, info )
423 CALL chkxer(
'ZHETRI_3', infot, nout, lerr, ok )
425 CALL zhetri_3(
'U', 0, a, 1, e, ip, w, -2, info )
426 CALL chkxer(
'ZHETRI_3', infot, nout, lerr, ok )
432 CALL zhetri_3x(
'/', 0, a, 1, e, ip, w, 1, info )
433 CALL chkxer(
'ZHETRI_3X', infot, nout, lerr, ok )
435 CALL zhetri_3x(
'U', -1, a, 1, e, ip, w, 1, info )
436 CALL chkxer(
'ZHETRI_3X', infot, nout, lerr, ok )
438 CALL zhetri_3x(
'U', 2, a, 1, e, ip, w, 1, info )
439 CALL chkxer(
'ZHETRI_3X', infot, nout, lerr, ok )
445 CALL zhetrs_3(
'/', 0, 0, a, 1, e, ip, b, 1, info )
446 CALL chkxer(
'ZHETRS_3', infot, nout, lerr, ok )
448 CALL zhetrs_3(
'U', -1, 0, a, 1, e, ip, b, 1, info )
449 CALL chkxer(
'ZHETRS_3', infot, nout, lerr, ok )
451 CALL zhetrs_3(
'U', 0, -1, a, 1, e, ip, b, 1, info )
452 CALL chkxer(
'ZHETRS_3', infot, nout, lerr, ok )
454 CALL zhetrs_3(
'U', 2, 1, a, 1, e, ip, b, 2, info )
455 CALL chkxer(
'ZHETRS_3', infot, nout, lerr, ok )
457 CALL zhetrs_3(
'U', 2, 1, a, 2, e, ip, b, 1, info )
458 CALL chkxer(
'ZHETRS_3', infot, nout, lerr, ok )
464 CALL zhecon_3(
'/', 0, a, 1, e, ip, anrm, rcond, w, info )
465 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
467 CALL zhecon_3(
'U', -1, a, 1, e, ip, anrm, rcond, w, info )
468 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
470 CALL zhecon_3(
'U', 2, a, 1, e, ip, anrm, rcond, w, info )
471 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
473 CALL zhecon_3(
'U', 1, a, 1, e, ip, -1.0d0, rcond, w, info)
474 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
479 ELSE IF( lsamen( 2, c2,
'HA' ) )
THEN
485 CALL zhetrf_aa(
'/', 0, a, 1, ip, w, 1, info )
486 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
488 CALL zhetrf_aa(
'U', -1, a, 1, ip, w, 1, info )
489 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
491 CALL zhetrf_aa(
'U', 2, a, 1, ip, w, 4, info )
492 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
494 CALL zhetrf_aa(
'U', 0, a, 1, ip, w, 0, info )
495 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
497 CALL zhetrf_aa(
'U', 0, a, 1, ip, w, -2, info )
498 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
504 CALL zhetrs_aa(
'/', 0, 0, a, 1, ip, b, 1, w, 1, info )
505 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
507 CALL zhetrs_aa(
'U', -1, 0, a, 1, ip, b, 1, w, 1, info )
508 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
510 CALL zhetrs_aa(
'U', 0, -1, a, 1, ip, b, 1, w, 1, info )
511 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
513 CALL zhetrs_aa(
'U', 2, 1, a, 1, ip, b, 2, w, 1, info )
514 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
516 CALL zhetrs_aa(
'U', 2, 1, a, 2, ip, b, 1, w, 1, info )
517 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
519 CALL zhetrs_aa(
'U', 0, 1, a, 1, ip, b, 1, w, 0, info )
520 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
522 CALL zhetrs_aa(
'U', 0, 1, a, 1, ip, b, 1, w, -2, info )
523 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
525 ELSE IF( lsamen( 2, c2,
'HP' ) )
THEN
535 CALL zhptrf(
'/', 0, a, ip, info )
536 CALL chkxer(
'ZHPTRF', infot, nout, lerr, ok )
538 CALL zhptrf(
'U', -1, a, ip, info )
539 CALL chkxer(
'ZHPTRF', infot, nout, lerr, ok )
545 CALL zhptri(
'/', 0, a, ip, w, info )
546 CALL chkxer(
'ZHPTRI', infot, nout, lerr, ok )
548 CALL zhptri(
'U', -1, a, ip, w, info )
549 CALL chkxer(
'ZHPTRI', infot, nout, lerr, ok )
555 CALL zhptrs(
'/', 0, 0, a, ip, b, 1, info )
556 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
558 CALL zhptrs(
'U', -1, 0, a, ip, b, 1, info )
559 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
561 CALL zhptrs(
'U', 0, -1, a, ip, b, 1, info )
562 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
564 CALL zhptrs(
'U', 2, 1, a, ip, b, 1, info )
565 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
571 CALL zhprfs(
'/', 0, 0, a, af, ip, b, 1, x, 1, r1, r2, w, r,
573 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
575 CALL zhprfs(
'U', -1, 0, a, af, ip, b, 1, x, 1, r1, r2, w, r,
577 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
579 CALL zhprfs(
'U', 0, -1, a, af, ip, b, 1, x, 1, r1, r2, w, r,
581 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
583 CALL zhprfs(
'U', 2, 1, a, af, ip, b, 1, x, 2, r1, r2, w, r,
585 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
587 CALL zhprfs(
'U', 2, 1, a, af, ip, b, 2, x, 1, r1, r2, w, r,
589 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
595 CALL zhpcon(
'/', 0, a, ip, anrm, rcond, w, info )
596 CALL chkxer(
'ZHPCON', infot, nout, lerr, ok )
598 CALL zhpcon(
'U', -1, a, ip, anrm, rcond, w, info )
599 CALL chkxer(
'ZHPCON', infot, nout, lerr, ok )
601 CALL zhpcon(
'U', 1, a, ip, -anrm, rcond, w, info )
602 CALL chkxer(
'ZHPCON', infot, nout, lerr, ok )
607 CALL alaesm( path, ok, nout )
subroutine zhetri2(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRI2
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...
subroutine zerrhe(PATH, NUNIT)
ZERRHE
subroutine zhetrs(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
ZHETRS
subroutine zhetf2(UPLO, N, A, LDA, IPIV, INFO)
ZHETF2 computes the factorization of a complex Hermitian matrix, using the diagonal pivoting method (...
subroutine zhprfs(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZHPRFS
subroutine alaesm(PATH, OK, NOUT)
ALAESM
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 ob...
subroutine zhetrs_3(UPLO, N, NRHS, A, LDA, E, IPIV, B, LDB, INFO)
ZHETRS_3
subroutine zhpcon(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, INFO)
ZHPCON
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
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...
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...
subroutine zhecon(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO)
ZHECON
subroutine zhetf2_rook(UPLO, N, A, LDA, IPIV, INFO)
ZHETF2_ROOK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bun...
subroutine zhetri_3(UPLO, N, A, LDA, E, IPIV, WORK, LWORK, INFO)
ZHETRI_3
subroutine zhptrs(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO)
ZHPTRS
subroutine zhetrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
ZHETRS_AA
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...
subroutine zhptri(UPLO, N, AP, IPIV, WORK, INFO)
ZHPTRI
subroutine zherfs(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZHERFS
subroutine zhetrf(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRF
subroutine zhecon_3(UPLO, N, A, LDA, E, IPIV, ANORM, RCOND, WORK, INFO)
ZHECON_3
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...
subroutine zhptrf(UPLO, N, AP, IPIV, INFO)
ZHPTRF
subroutine zhetri(UPLO, N, A, LDA, IPIV, WORK, INFO)
ZHETRI
subroutine zhetrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRF_AA
subroutine zhetri2x(UPLO, N, A, LDA, IPIV, WORK, NB, INFO)
ZHETRI2X
subroutine zhetri_3x(UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO)
ZHETRI_3X