75 DOUBLE PRECISION ANRM, RCOND
79 DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX )
80 COMPLEX*16 A( , NMAX ), AF( NMAX, NMAX ), B( NMAX ),
81 $ E( NMAX ), W( 2*NMAX ), X( NMAX )
103 COMMON / infoc / infot, nout, ok, lerr
107 INTRINSIC dble, dcmplx
112 WRITE( nout, fmt = * )
119 a( i, j ) = dcmplx( 1.d0 / dble( i+j ),
120 $ -1.d0 / dble( i+j ) )
122 $ -1.d0 / dble( i+j ) )
135 IF( lsamen( 2, c2,
'HE' ) )
THEN
145 CALL ZHETRF( '/
', 0, A, 1, IP, W, 1, INFO )
146 CALL CHKXER( 'zhetrf', INFOT, NOUT, LERR, OK )
148 CALL ZHETRF( 'u
', -1, A, 1, IP, W, 1, INFO )
149 CALL CHKXER( 'zhetrf', INFOT, NOUT, LERR, OK )
151 CALL ZHETRF( 'u
', 2, A, 1, IP, W, 4, INFO )
152 CALL CHKXER( 'zhetrf', INFOT, NOUT, LERR, OK )
154 CALL ZHETRF( 'u
', 0, A, 1, IP, W, 0, INFO )
155 CALL CHKXER( 'zhetrf', INFOT, NOUT, LERR, OK )
157 CALL ZHETRF( 'u
', 0, A, 1, IP, W, -2, INFO )
158 CALL CHKXER( 'zhetrf', INFOT, NOUT, LERR, OK )
164 CALL ZHETF2( '/
', 0, A, 1, IP, INFO )
165 CALL CHKXER( 'zhetf2', INFOT, NOUT, LERR, OK )
167 CALL ZHETF2( 'u
', -1, A, 1, IP, INFO )
168 CALL CHKXER( 'zhetf2', INFOT, NOUT, LERR, OK )
170 CALL ZHETF2( 'u
', 2, A, 1, IP, INFO )
171 CALL CHKXER( 'zhetf2', INFOT, NOUT, LERR, OK )
177 CALL ZHETRI( '/
', 0, A, 1, IP, W, INFO )
178 CALL CHKXER( 'zhetri', INFOT, NOUT, LERR, OK )
180 CALL ZHETRI( 'u
', -1, A, 1, IP, W, INFO )
181 CALL CHKXER( 'zhetri', INFOT, NOUT, LERR, OK )
183 CALL ZHETRI( 'u
', 2, A, 1, IP, W, INFO )
184 CALL CHKXER( 'zhetri', INFOT, NOUT, LERR, OK )
190 CALL ZHETRI2( '/
', 0, A, 1, IP, W, 1, INFO )
191 CALL CHKXER( 'zhetri2', INFOT, NOUT, LERR, OK )
193 CALL ZHETRI2( 'u
', -1, A, 1, IP, W, 1, INFO )
194 CALL CHKXER( 'zhetri2', INFOT, NOUT, LERR, OK )
196 CALL ZHETRI2( 'u
', 2, A, 1, IP, W, 1, INFO )
197 CALL CHKXER( 'zhetri2', INFOT, NOUT, LERR, OK )
203 CALL ZHETRI2X( '/
', 0, A, 1, IP, W, 1, INFO )
204 CALL CHKXER( 'zhetri2x', INFOT, NOUT, LERR, OK )
206 CALL ZHETRI2X( 'u
', -1, A, 1, IP, W, 1, INFO )
207 CALL CHKXER( 'zhetri2x', INFOT, NOUT, LERR, OK )
209 CALL ZHETRI2X( 'u
', 2, A, 1, IP, W, 1, INFO )
210 CALL CHKXER( 'zhetri2x', INFOT, NOUT, LERR, OK )
216 CALL ZHETRS( '/
', 0, 0, A, 1, IP, B, 1, INFO )
217 CALL CHKXER( 'zhetrs', INFOT, NOUT, LERR, OK )
219 CALL ZHETRS( 'u
', -1, 0, A, 1, IP, B, 1, INFO )
220 CALL CHKXER( 'zhetrs', INFOT, NOUT, LERR, OK )
222 CALL ZHETRS( 'u
', 0, -1, A, 1, IP, B, 1, INFO )
223 CALL CHKXER( 'zhetrs', INFOT, NOUT, LERR, OK )
225 CALL ZHETRS( 'u
', 2, 1, A, 1, IP, B, 2, INFO )
226 CALL CHKXER( 'zhetrs', INFOT, NOUT, LERR, OK )
228 CALL ZHETRS( 'u
', 2, 1, A, 2, IP, B, 1, INFO )
229 CALL CHKXER( 'zhetrs', INFOT, NOUT, LERR, OK )
235 CALL ZHERFS( '/
', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
237 CALL CHKXER( 'zherfs', INFOT, NOUT, LERR, OK )
239 CALL ZHERFS( 'u
', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
241 CALL CHKXER( 'zherfs', INFOT, NOUT, LERR, OK )
243 CALL ZHERFS( 'u
', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
245 CALL CHKXER( 'zherfs', INFOT, NOUT, LERR, OK )
247 CALL ZHERFS( 'u
', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
249 CALL CHKXER( 'zherfs', INFOT, NOUT, LERR, OK )
251 CALL ZHERFS( 'u
', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
253 CALL CHKXER( 'zherfs', INFOT, NOUT, LERR, OK )
255 CALL ZHERFS( 'u
', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
257 CALL CHKXER( 'zherfs', INFOT, NOUT, LERR, OK )
259 CALL ZHERFS( 'u
', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
261 CALL CHKXER( 'zherfs', INFOT, NOUT, LERR, OK )
267 CALL ZHECON( '/
', 0, A, 1, IP, ANRM, RCOND, W, INFO )
268 CALL CHKXER( 'zhecon', INFOT, NOUT, LERR, OK )
270 CALL ZHECON( 'u
', -1, A, 1, IP, ANRM, RCOND, W, INFO )
271 CALL CHKXER( 'zhecon', INFOT, NOUT, LERR, OK )
273 CALL ZHECON( 'u
', 2, A, 1, IP, ANRM, RCOND, W, INFO )
274 CALL CHKXER( 'zhecon', INFOT, NOUT, LERR, OK )
276 CALL ZHECON( 'u
', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
277 CALL CHKXER( 'zhecon', INFOT, NOUT, LERR, OK )
279 ELSE IF( LSAMEN( 2, C2, 'hr
' ) ) THEN
289 CALL ZHETRF_ROOK( '/
', 0, A, 1, IP, W, 1, INFO )
290 CALL CHKXER( 'zhetrf_rook', INFOT, NOUT, LERR, OK )
292 CALL ZHETRF_ROOK( 'u
', -1, A, 1, IP, W, 1, INFO )
293 CALL CHKXER( 'zhetrf_rook', INFOT, NOUT, LERR, OK )
295 CALL ZHETRF_ROOK( 'u
', 2, A, 1, IP, W, 4, INFO )
296 CALL CHKXER( 'zhetrf_rook', INFOT, NOUT, LERR, OK )
298 CALL ZHETRF_ROOK( 'u
', 0, A, 1, IP, W, 0, INFO )
299 CALL CHKXER( 'zhetrf_rook', INFOT, NOUT, LERR, OK )
301 CALL ZHETRF_ROOK( 'u
', 0, A, 1, IP, W, -2, INFO )
302 CALL CHKXER( 'zhetrf_rook', INFOT, NOUT, LERR, OK )
308 CALL ZHETF2_ROOK( '/
', 0, A, 1, IP, INFO )
309 CALL CHKXER( 'zhetf2_rook', INFOT, NOUT, LERR, OK )
311 CALL ZHETF2_ROOK( 'u
', -1, A, 1, IP, INFO )
312 CALL CHKXER( 'zhetf2_rook', INFOT, NOUT, LERR, OK )
314 CALL ZHETF2_ROOK( 'u
', 2, A, 1, IP, INFO )
315 CALL CHKXER( 'zhetf2_rook', INFOT, NOUT, LERR, OK )
321 CALL ZHETRI_ROOK( '/
', 0, A, 1, IP, W, INFO )
322 CALL CHKXER( 'zhetri_rook', INFOT, NOUT, LERR, OK )
324 CALL ZHETRI_ROOK( 'u
', -1, A, 1, IP, W, INFO )
325 CALL CHKXER( 'zhetri_rook', INFOT, NOUT, LERR, OK )
327 CALL ZHETRI_ROOK( 'u
', 2, A, 1, IP, W, INFO )
328 CALL CHKXER( 'zhetri_rook', INFOT, NOUT, LERR, OK )
334 CALL ZHETRS_ROOK( '/
', 0, 0, A, 1, IP, B, 1, INFO )
335 CALL CHKXER( 'zhetrs_rook', INFOT, NOUT, LERR, OK )
337 CALL ZHETRS_ROOK( 'u
', -1, 0, A, 1, IP, B, 1, INFO )
338 CALL CHKXER( 'zhetrs_rook', INFOT, NOUT, LERR, OK )
340 CALL ZHETRS_ROOK( 'u
', 0, -1, A, 1, IP, B, 1, INFO )
341 CALL CHKXER( 'zhetrs_rook', INFOT, NOUT, LERR, OK )
343 CALL ZHETRS_ROOK( 'u
', 2, 1, A, 1, IP, B, 2, INFO )
344 CALL CHKXER( 'zhetrs_rook', INFOT, NOUT, LERR, OK )
346 CALL ZHETRS_ROOK( 'u
', 2, 1, A, 2, IP, B, 1, INFO )
347 CALL CHKXER( 'zhetrs_rook', INFOT, NOUT, LERR, OK )
353 CALL ZHECON_ROOK( '/
', 0, A, 1, IP, ANRM, RCOND, W, INFO )
354 CALL CHKXER( 'zhecon_rook', INFOT, NOUT, LERR, OK )
356 CALL ZHECON_ROOK( 'u
', -1, A, 1, IP, ANRM, RCOND, W, INFO )
357 CALL CHKXER( 'zhecon_rook', INFOT, NOUT, LERR, OK )
359 CALL ZHECON_ROOK( 'u
', 2, A, 1, IP, ANRM, RCOND, W, INFO )
360 CALL CHKXER( 'zhecon_rook', INFOT, NOUT, LERR, OK )
362 CALL ZHECON_ROOK( 'u
', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
363 CALL CHKXER( 'zhecon_rook', INFOT, NOUT, LERR, OK )
365 ELSE IF( LSAMEN( 2, C2, 'hk
' ) ) THEN
379 CALL ZHETRF_RK( '/', 0, a, 1, e, ip, w, 1, info )
380 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
382 CALL zhetrf_rk(
'U', -1, a, 1, e, ip, w, 1, info )
383 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
385 CALL zhetrf_rk(
'U', 2, a, 1, e, ip, w, 4, info )
386 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
388 CALL zhetrf_rk(
'U', 0, a, 1, e, ip, w, 0, info )
389 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
391 CALL zhetrf_rk(
'U', 0, a, 1, e, ip, w, -2, info )
392 CALL chkxer(
'ZHETRF_RK', infot, nout, lerr, ok )
398 CALL zhetf2_rk( '/
', 0, A, 1, E, IP, INFO )
399 CALL CHKXER( 'zhetf2_rk', INFOT, NOUT, LERR, OK )
401 CALL ZHETF2_RK( 'u
', -1, A, 1, E, IP, INFO )
402 CALL CHKXER( 'zhetf2_rk', INFOT, NOUT, LERR, OK )
404 CALL ZHETF2_RK( 'u
', 2, A, 1, E, IP, INFO )
405 CALL CHKXER( 'zhetf2_rk', INFOT, NOUT, LERR, OK )
411 CALL ZHETRI_3( '/
', 0, A, 1, E, IP, W, 1, INFO )
412 CALL CHKXER( 'zhetri_3', INFOT, NOUT, LERR, OK )
414 CALL ZHETRI_3( 'u
', -1, A, 1, E, IP, W, 1, INFO )
415 CALL CHKXER( 'zhetri_3', INFOT, NOUT, LERR, OK )
417 CALL ZHETRI_3( 'u
', 2, A, 1, E, IP, W, 1, INFO )
418 CALL CHKXER( 'zhetri_3', INFOT, NOUT, LERR, OK )
420 CALL ZHETRI_3( 'u
', 0, A, 1, E, IP, W, 0, INFO )
421 CALL CHKXER( 'zhetri_3', INFOT, NOUT, LERR, OK )
423 CALL ZHETRI_3( 'u
', 0, A, 1, E, IP, W, -2, INFO )
424 CALL CHKXER( 'zhetri_3', INFOT, NOUT, LERR, OK )
430 CALL ZHETRI_3X( '/
', 0, A, 1, E, IP, W, 1, INFO )
431 CALL CHKXER( 'zhetri_3x', INFOT, NOUT, LERR, OK )
433 CALL ZHETRI_3X( 'u
', -1, A, 1, E, IP, W, 1, INFO )
434 CALL CHKXER( 'zhetri_3x', INFOT, NOUT, LERR, OK )
436 CALL ZHETRI_3X( 'u
', 2, A, 1, E, IP, W, 1, INFO )
437 CALL CHKXER( 'zhetri_3x', INFOT, NOUT, LERR, OK )
443 CALL ZHETRS_3( '/
', 0, 0, A, 1, E, IP, B, 1, INFO )
444 CALL CHKXER( 'zhetrs_3', INFOT, NOUT, LERR, OK )
446 CALL ZHETRS_3( 'u
', -1, 0, A, 1, E, IP, B, 1, INFO )
447 CALL CHKXER( 'zhetrs_3', INFOT, NOUT, LERR, OK )
449 CALL ZHETRS_3( 'u
', 0, -1, A, 1, E, IP, B, 1, INFO )
450 CALL CHKXER( 'zhetrs_3', INFOT, NOUT, LERR, OK )
452 CALL ZHETRS_3( 'u
', 2, 1, A, 1, E, IP, B, 2, INFO )
453 CALL CHKXER( 'zhetrs_3', INFOT, NOUT, LERR, OK )
455 CALL ZHETRS_3( 'u
', 2, 1, A, 2, E, IP, B, 1, INFO )
456 CALL CHKXER( 'zhetrs_3', INFOT, NOUT, LERR, OK )
462 CALL zhecon_3(
'/', 0, a, 1, e, ip, anrm, rcond, w, info )
463 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
465 CALL zhecon_3(
'U', -1, a, 1, e, ip, anrm, rcond, w, info )
466 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
468 CALL zhecon_3(
'U', 2, a, 1, e, ip, anrm, rcond, w, info )
469 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
471 CALL zhecon_3(
'U', 1, a, 1, e, ip, -1.0d0, rcond, w, info)
472 CALL chkxer(
'ZHECON_3', infot, nout, lerr, ok )
477 ELSE IF( lsamen( 2, c2,
'HA' ) )
THEN
483 CALL zhetrf_aa(
'/', 0, a, 1, ip, w, 1, info )
484 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
486 CALL zhetrf_aa(
'U', -1, a, 1, ip, w, 1, info )
487 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
489 CALL zhetrf_aa(
'U', 2, a, 1, ip, w, 4, info )
490 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
492 CALL zhetrf_aa(
'U', 0, a, 1, ip, w, 0, info )
493 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
495 CALL zhetrf_aa(
'U', 0, a, 1, ip, w, -2, info )
496 CALL chkxer(
'ZHETRF_AA', infot, nout, lerr, ok )
502 CALL zhetrs_aa(
'/', 0, 0, a, 1, ip, b, 1, w, 1, info )
503 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
505 CALL zhetrs_aa(
'U', -1, 0, a, 1, ip, b, 1, w, 1, info )
506 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
508 CALL zhetrs_aa(
'U', 0, -1, a, 1, ip, b, 1, w, 1, info )
509 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
511 CALL zhetrs_aa(
'U', 2, 1, a, 1, ip, b, 2, w, 1, info )
512 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
514 CALL zhetrs_aa(
'U', 2, 1, a, 2, ip, b, 1, w, 1, info )
515 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
517 CALL zhetrs_aa(
'U', 0, 1, a, 1, ip, b, 1, w, 0, info )
518 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
520 CALL zhetrs_aa(
'U', 0, 1, a, 1, ip, b, 1, w, -2, info )
521 CALL chkxer(
'ZHETRS_AA', infot, nout, lerr, ok )
523 ELSE IF( lsamen( 2, c2,
'S2' ) )
THEN
530 srnamt =
'ZHETRF_AA_2STAGE'
532 CALL zhetrf_aa_2stage(
'/', 0, a, 1, a, 1, ip, ip, w, 1,
534 CALL chkxer(
'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
536 CALL zhetrf_aa_2stage(
'U', -1, a, 1, a, 1, ip, ip, w, 1,
538 CALL chkxer(
'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
540 CALL zhetrf_aa_2stage(
'U', 2, a, 1, a, 2, ip, ip, w, 1,
542 CALL chkxer(
'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
544 CALL zhetrf_aa_2stage(
'U', 2, a, 2, a, 1, ip, ip, w, 1,
546 CALL chkxer(
'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
548 CALL zhetrf_aa_2stage(
'U', 2, a, 2, a, 8, ip, ip, w, 0,
550 CALL chkxer(
'ZHETRF_AA_2STAGE', infot, nout, lerr, ok )
554 srnamt =
'ZHETRS_AA_2STAGE'
558 CALL chkxer(
'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
562 CALL chkxer(
'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
566 CALL chkxer(
'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
570 CALL chkxer(
'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
574 CALL chkxer(
'ZHETRS_AA_2STAGE', infot, nout, lerr, ok )
578 CALL chkxer(
'ZHETRS_AA_STAGE', infot, nout, lerr, ok )
580 ELSE IF( lsamen( 2, c2,
'HP' ) )
THEN
590 CALL zhptrf(
'/', 0, a, ip, info )
591 CALL chkxer(
'ZHPTRF', infot, nout, lerr, ok )
593 CALL zhptrf(
'U', -1, a, ip, info )
594 CALL chkxer(
'ZHPTRF', infot, nout, lerr, ok )
600 CALL zhptri(
'/', 0, a, ip, w, info )
601 CALL chkxer(
'ZHPTRI', infot, nout, lerr, ok )
603 CALL zhptri(
'U', -1, a, ip, w, info )
604 CALL chkxer(
'ZHPTRI', infot, nout, lerr, ok )
610 CALL zhptrs(
'/', 0, 0, a, ip, b, 1, info )
611 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
613 CALL zhptrs(
'U', -1, 0, a, ip, b, 1, info )
614 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
616 CALL zhptrs(
'U', 0, -1, a, ip, b, 1, info )
617 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
619 CALL zhptrs(
'U', 2, 1, a, ip, b, 1, info )
620 CALL chkxer(
'ZHPTRS', infot, nout, lerr, ok )
626 CALL zhprfs(
'/', 0, 0, a, af, ip, b, 1, x, 1, r1, r2, w, r,
628 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
630 CALL zhprfs(
'U', -1, 0, a, af, ip, b, 1, x, 1, r1, r2, w, r,
632 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
634 CALL zhprfs(
'U', 0, -1, a, af, ip, b, 1, x, 1, r1, r2, w, r,
636 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
638 CALL zhprfs(
'U', 2, 1, a, af, ip, b, 1, x, 2, r1, r2, w, r,
640 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
642 CALL zhprfs(
'U', 2, 1, a, af, ip, b, 2, x, 1, r1, r2, w, r,
644 CALL chkxer(
'ZHPRFS', infot, nout, lerr, ok )
650 CALL zhpcon(
'/', 0, a, ip, anrm, rcond, w, info )
651 CALL chkxer(
'ZHPCON', infot, nout, lerr, ok )
653 CALL zhpcon(
'U', -1, a, ip, anrm, rcond, w, info )
654 CALL chkxer(
'ZHPCON', infot, nout, lerr, ok )
656 CALL zhpcon(
'U', 1, a, ip, -anrm, rcond, w, info )
657 CALL chkxer(
'ZHPCON', infot, nout, lerr, ok )
662 CALL alaesm( path, ok, nout )