74 DOUBLE PRECISION ANRM, RCOND
77 INTEGER IP( NMAX ), IW( NMAX )
78 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( ),
79 $ E( NMAX ), R1( NMAX ), R2( NMAX ), W( 3*NMAX ),
101 COMMON / infoc / infot, nout, ok, lerr
102 COMMON / srnamc / srnamt
110 WRITE( nout, fmt = * )
117 a( i, j ) = 1.d0 / dble( i+j )
118 af( i, j ) = 1.d0 / dble( i+j )
133 IF( lsamen( 2, c2,
'SY' ) )
THEN
143 CALL dsytrf( '/
', 0, A, 1, IP, W, 1, INFO )
144 CALL CHKXER( 'dsytrf', INFOT, NOUT, LERR, OK )
146 CALL DSYTRF( 'u
', -1, A, 1, IP, W, 1, INFO )
147 CALL CHKXER( 'dsytrf', INFOT, NOUT, LERR, OK )
149 CALL DSYTRF( 'u
', 2, A, 1, IP, W, 4, INFO )
150 CALL CHKXER( 'dsytrf', INFOT, NOUT, LERR, OK )
152 CALL DSYTRF( 'u
', 0, A, 1, IP, W, 0, INFO )
153 CALL CHKXER( 'dsytrf', INFOT, NOUT, LERR, OK )
155 CALL DSYTRF( 'u
', 0, A, 1, IP, W, -2, INFO )
156 CALL CHKXER( 'dsytrf', INFOT, NOUT, LERR, OK )
162 CALL DSYTF2( '/
', 0, A, 1, IP, INFO )
163 CALL CHKXER( 'dsytf2', INFOT, NOUT, LERR, OK )
165 CALL DSYTF2( 'u
', -1, A, 1, IP, INFO )
166 CALL CHKXER( 'dsytf2', INFOT, NOUT, LERR, OK )
168 CALL DSYTF2( 'u
', 2, A, 1, IP, INFO )
169 CALL CHKXER( 'dsytf2', INFOT, NOUT, LERR, OK )
175 CALL DSYTRI( '/
', 0, A, 1, IP, W, INFO )
176 CALL CHKXER( 'dsytri', INFOT, NOUT, LERR, OK )
178 CALL DSYTRI( 'u
', -1, A, 1, IP, W, INFO )
179 CALL CHKXER( 'dsytri', INFOT, NOUT, LERR, OK )
181 CALL DSYTRI( 'u
', 2, A, 1, IP, W, INFO )
182 CALL CHKXER( 'dsytri', INFOT, NOUT, LERR, OK )
188 CALL DSYTRI2( '/
', 0, A, 1, IP, W, IW(1), INFO )
189 CALL CHKXER( 'dsytri2', INFOT, NOUT, LERR, OK )
191 CALL DSYTRI2( 'u
', -1, A, 1, IP, W, IW(1), INFO )
192 CALL CHKXER( 'dsytri2', INFOT, NOUT, LERR, OK )
194 CALL DSYTRI2( 'u
', 2, A, 1, IP, W, IW(1), INFO )
195 CALL CHKXER( 'dsytri2', INFOT, NOUT, LERR, OK )
201 CALL DSYTRI2X( '/
', 0, A, 1, IP, W, 1, INFO )
202 CALL CHKXER( 'dsytri2x', INFOT, NOUT, LERR, OK )
204 CALL DSYTRI2X( 'u
', -1, A, 1, IP, W, 1, INFO )
205 CALL CHKXER( 'dsytri2x', INFOT, NOUT, LERR, OK )
207 CALL DSYTRI2X( 'u
', 2, A, 1, IP, W, 1, INFO )
208 CALL CHKXER( 'dsytri2x', INFOT, NOUT, LERR, OK )
214 CALL DSYTRS( '/
', 0, 0, A, 1, IP, B, 1, INFO )
215 CALL CHKXER( 'dsytrs', INFOT, NOUT, LERR, OK )
217 CALL DSYTRS( 'u
', -1, 0, A, 1, IP, B, 1, INFO )
218 CALL CHKXER( 'dsytrs', INFOT, NOUT, LERR, OK )
220 CALL DSYTRS( 'u
', 0, -1, A, 1, IP, B, 1, INFO )
221 CALL CHKXER( 'dsytrs', INFOT, NOUT, LERR, OK )
223 CALL DSYTRS( 'u
', 2, 1, A, 1, IP, B, 2, INFO )
224 CALL CHKXER( 'dsytrs', INFOT, NOUT, LERR, OK )
226 CALL DSYTRS( 'u
', 2, 1, A, 2, IP, B, 1, INFO )
227 CALL CHKXER( 'dsytrs', INFOT, NOUT, LERR, OK )
233 CALL DSYRFS( '/
', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
235 CALL CHKXER( 'dsyrfs', INFOT, NOUT, LERR, OK )
237 CALL DSYRFS( 'u
', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
239 CALL CHKXER( 'dsyrfs', INFOT, NOUT, LERR, OK )
241 CALL DSYRFS( 'u
', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
243 CALL CHKXER( 'dsyrfs', INFOT, NOUT, LERR, OK )
245 CALL DSYRFS( 'u
', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
247 CALL CHKXER( 'dsyrfs', INFOT, NOUT, LERR, OK )
249 CALL DSYRFS( 'u
', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
251 CALL CHKXER( 'dsyrfs', INFOT, NOUT, LERR, OK )
253 CALL DSYRFS( 'u
', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
255 CALL CHKXER( 'dsyrfs', INFOT, NOUT, LERR, OK )
257 CALL DSYRFS( 'u
', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
259 CALL CHKXER( 'dsyrfs', INFOT, NOUT, LERR, OK )
265 CALL DSYCON( '/
', 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
266 CALL CHKXER( 'dsycon', INFOT, NOUT, LERR, OK )
268 CALL DSYCON( 'u
', -1, A, 1, IP, ANRM, RCOND, W, IW, INFO )
269 CALL CHKXER( 'dsycon', INFOT, NOUT, LERR, OK )
271 CALL DSYCON( 'u
', 2, A, 1, IP, ANRM, RCOND, W, IW, INFO )
272 CALL CHKXER( 'dsycon', infot, nout, lerr, ok )
274 CALL dsycon(
'U', 1, a, 1, ip, -1.0d0, rcond, w, iw, info )
275 CALL chkxer(
'DSYCON', infot, nout, lerr, ok )
277 ELSE IF( lsamen( 2, c2,
'SR' ) )
THEN
285 srnamt =
'DSYTRF_ROOK'
288 CALL chkxer(
'DSYTRF_ROOK', infot, nout, lerr, ok )
291 CALL chkxer(
'DSYTRF_ROOK', infot, nout, lerr, ok )
294 CALL chkxer(
'DSYTRF_ROOK', infot, nout, lerr, ok )
297 CALL chkxer(
'DSYTRF_ROOK', infot, nout, lerr, ok )
300 CALL chkxer(
'DSYTRF_ROOK', infot, nout, lerr, ok )
304 srnamt =
'DSYTF2_ROOK'
307 CALL chkxer(
'DSYTF2_ROOK', infot, nout, lerr, ok )
310 CALL chkxer(
'DSYTF2_ROOK', infot, nout, lerr, ok )
313 CALL chkxer(
'DSYTF2_ROOK', infot, nout, lerr, ok )
317 srnamt =
'DSYTRI_ROOK'
320 CALL chkxer(
'DSYTRI_ROOK', infot, nout, lerr, ok )
323 CALL chkxer(
'DSYTRI_ROOK', infot, nout, lerr, ok )
326 CALL chkxer(
'DSYTRI_ROOK', infot, nout, lerr, ok )
330 srnamt =
'DSYTRS_ROOK'
332 CALL dsytrs_rook(
'/', 0, 0, a, 1, ip, b, 1, info )
333 CALL chkxer(
'DSYTRS_ROOK', infot, nout, lerr, ok )
335 CALL dsytrs_rook(
'U', -1, 0, a, 1, ip, b, 1, info )
336 CALL chkxer(
'DSYTRS_ROOK', infot, nout, lerr, ok )
338 CALL dsytrs_rook(
'U', 0, -1, a, 1, ip, b, 1, info )
339 CALL chkxer(
'DSYTRS_ROOK', infot, nout, lerr, ok )
341 CALL dsytrs_rook(
'U', 2, 1, a, 1, ip, b, 2, info )
342 CALL chkxer(
'DSYTRS_ROOK', infot, nout, lerr, ok )
344 CALL dsytrs_rook(
'U', 2, 1, a, 2, ip, b, 1, info )
345 CALL chkxer(
'DSYTRS_ROOK', infot, nout, lerr, ok )
349 srnamt =
'DSYCON_ROOK'
351 CALL dsycon_rook(
'/', 0, a, 1, ip, anrm, rcond, w, iw, info )
352 CALL chkxer(
'DSYCON_ROOK', infot, nout, lerr, ok )
354 CALL dsycon_rook(
'U', -1, a, 1, ip, anrm, rcond, w, iw, info )
355 CALL chkxer(
'DSYCON_ROOK', infot, nout, lerr, ok )
357 CALL dsycon_rook(
'U', 2, a, 1, ip, anrm, rcond, w, iw, info )
358 CALL chkxer(
'DSYCON_ROOK', infot, nout, lerr, ok )
360 CALL dsycon_rook(
'U', 1, a, 1, ip, -1.0d0, rcond, w, iw, info)
363 ELSE IF( LSAMEN( 2, C2, 'sk
' ) ) THEN
377 CALL DSYTRF_RK( '/
', 0, A, 1, E, IP, W, 1, INFO )
378 CALL CHKXER( 'dsytrf_rk', INFOT, NOUT, LERR, OK )
380 CALL DSYTRF_RK( 'u
', -1, A, 1, E, IP, W, 1, INFO )
381 CALL CHKXER( 'dsytrf_rk', INFOT, NOUT, LERR, OK )
383 CALL DSYTRF_RK( 'u
', 2, A, 1, E, IP, W, 1, INFO )
384 CALL CHKXER( 'dsytrf_rk', INFOT, NOUT, LERR, OK )
386 CALL DSYTRF_RK( 'u
', 0, A, 1, E, IP, W, 0, INFO )
387 CALL CHKXER( 'dsytrf_rk', INFOT, NOUT, LERR, OK )
389 CALL DSYTRF_RK( 'u
', 0, A, 1, E, IP, W, -2, INFO )
390 CALL CHKXER( 'dsytrf_rk', INFOT, NOUT, LERR, OK )
396 CALL DSYTF2_RK( '/
', 0, A, 1, E, IP, INFO )
397 CALL CHKXER( 'dsytf2_rk', INFOT, NOUT, LERR, OK )
399 CALL DSYTF2_RK( 'u
', -1, A, 1, E, IP, INFO )
400 CALL CHKXER( 'dsytf2_rk', INFOT, NOUT, LERR, OK )
402 CALL DSYTF2_RK( 'u
', 2, A, 1, E, IP, INFO )
403 CALL CHKXER( 'dsytf2_rk', INFOT, NOUT, LERR, OK )
409 CALL DSYTRI_3( '/
', 0, A, 1, E, IP, W, 1, INFO )
410 CALL CHKXER( 'dsytri_3', INFOT, NOUT, LERR, OK )
412 CALL DSYTRI_3( 'u
', -1, A, 1, E, IP, W, 1, INFO )
413 CALL CHKXER( 'dsytri_3', INFOT, NOUT, LERR, OK )
415 CALL DSYTRI_3( 'u
', 2, A, 1, E, IP, W, 1, INFO )
416 CALL CHKXER( 'dsytri_3', INFOT, NOUT, LERR, OK )
418 CALL DSYTRI_3( 'u
', 0, A, 1, E, IP, W, 0, INFO )
419 CALL CHKXER( 'dsytri_3', INFOT, NOUT, LERR, OK )
421 CALL DSYTRI_3( 'u
', 0, A, 1, E, IP, W, -2, INFO )
422 CALL CHKXER( 'dsytri_3', INFOT, NOUT, LERR, OK )
428 CALL DSYTRI_3X( '/
', 0, A, 1, E, IP, W, 1, INFO )
429 CALL CHKXER( 'dsytri_3x', INFOT, NOUT, LERR, OK )
431 CALL DSYTRI_3X( 'u
', -1, A, 1, E, IP, W, 1, INFO )
432 CALL CHKXER( 'dsytri_3x', INFOT, NOUT, LERR, OK )
434 CALL DSYTRI_3X( 'u
', 2, A, 1, E, IP, W, 1, INFO )
435 CALL CHKXER( 'dsytri_3x', INFOT, NOUT, LERR, OK )
441 CALL DSYTRS_3( '/
', 0, 0, A, 1, E, IP, B, 1, INFO )
442 CALL CHKXER( 'dsytrs_3', INFOT, NOUT, LERR, OK )
444 CALL DSYTRS_3( 'u
', -1, 0, A, 1, E, IP, B, 1, INFO )
445 CALL CHKXER( 'dsytrs_3', INFOT, NOUT, LERR, OK )
447 CALL DSYTRS_3( 'u
', 0, -1, A, 1, E, IP, B, 1, INFO )
448 CALL CHKXER( 'dsytrs_3', INFOT, NOUT, LERR, OK )
450 CALL DSYTRS_3( 'u
', 2, 1, A, 1, E, IP, B, 2, INFO )
451 CALL CHKXER( 'dsytrs_3', INFOT, NOUT, LERR, OK )
453 CALL DSYTRS_3( 'u
', 2, 1, A, 2, E, IP, B, 1, INFO )
454 CALL CHKXER( 'dsytrs_3', INFOT, NOUT, LERR, OK )
460 CALL DSYCON_3( '/
', 0, A, 1, E, IP, ANRM, RCOND, W, IW,
462 CALL CHKXER( 'dsycon_3', INFOT, NOUT, LERR, OK )
464 CALL DSYCON_3( 'u
', -1, A, 1, E, IP, ANRM, RCOND, W, IW,
466 CALL CHKXER( 'dsycon_3', INFOT, NOUT, LERR, OK )
468 CALL DSYCON_3( 'u
', 2, A, 1, E, IP, ANRM, RCOND, W, IW,
470 CALL CHKXER( 'dsycon_3', INFOT, NOUT, LERR, OK )
472 CALL DSYCON_3( 'u
', 1, A, 1, E, IP, -1.0D0, RCOND, W, IW,
474 CALL CHKXER( 'dsycon_3', INFOT, NOUT, LERR, OK )
476 ELSE IF( LSAMEN( 2, C2, 'sa
' ) ) THEN
485 CALL DSYTRF_AA( '/
', 0, A, 1, IP, W, 1, INFO )
486 CALL CHKXER( 'dsytrf_aa', INFOT, NOUT, LERR, OK )
488 CALL DSYTRF_AA( 'u
', -1, A, 1, IP, W, 1, INFO )
489 CALL CHKXER( 'dsytrf_aa', INFOT, NOUT, LERR, OK )
491 CALL DSYTRF_AA( 'u
', 2, A, 1, IP, W, 4, INFO )
492 CALL CHKXER( 'dsytrf_aa', INFOT, NOUT, LERR, OK )
494 CALL DSYTRF_AA( 'u
', 0, A, 1, IP, W, 0, INFO )
495 CALL CHKXER( 'dsytrf_aa', INFOT, NOUT, LERR, OK )
497 CALL DSYTRF_AA( 'u
', 0, A, 1, IP, W, -2, INFO )
498 CALL CHKXER( 'dsytrf_aa', INFOT, NOUT, LERR, OK )
504 CALL DSYTRS_AA( '/
', 0, 0, A, 1, IP, B, 1, W, 1, INFO )
505 CALL CHKXER( 'dsytrs_aa', INFOT, NOUT, LERR, OK )
507 CALL DSYTRS_AA( 'u
', -1, 0, A, 1, IP, B, 1, W, 1, INFO )
508 CALL CHKXER( 'dsytrs_aa', infot, nout, lerr, ok )
510 CALL dsytrs_aa(
'U', 0, -1, a, 1, ip, b, 1, w, 1, info )
511 CALL chkxer(
'DSYTRS_AA', infot, nout, lerr, ok )
513 CALL dsytrs_aa(
'U', 2, 1, a, 1, ip, b, 2, w, 1, info )
514 CALL chkxer(
'DSYTRS_AA', infot, nout, lerr, ok )
516 CALL dsytrs_aa(
'U', 2, 1, a, 2, ip, b, 1, w, 1, info )
517 CALL chkxer(
'DSYTRS_AA', infot, nout, lerr, ok )
519 CALL dsytrs_aa(
'U', 0, 1, a, 2, ip, b, 1, w, 0, info )
520 CALL chkxer(
'DSYTRS_AA', infot, nout, lerr, ok )
522 CALL dsytrs_aa(
'U', 0, 1, a, 2, ip, b, 1, w, -2, info )
523 CALL chkxer(
'DSYTRS_AA', infot, nout, lerr, ok )
525 ELSE IF( lsamen( 2, c2,
'S2' ) )
THEN
532 srnamt =
'DSYTRF_AA_2STAGE'
534 CALL dsytrf_aa_2stage(
'/', 0, a, 1, a, 1, ip, ip, w, 1,
536 CALL chkxer(
'DSYTRF_AA_2STAGE', infot, nout, lerr, ok )
538 CALL dsytrf_aa_2stage(
'U', -1, a, 1, a, 1, ip, ip, w, 1,
540 CALL chkxer(
'DSYTRF_AA_2STAGE', infot, nout, lerr, ok )
542 CALL dsytrf_aa_2stage(
'U', 2, a, 1, a, 2, ip, ip, w, 1,
544 CALL chkxer(
'DSYTRF_AA_2STAGE', infot, nout, lerr, ok )
546 CALL dsytrf_aa_2stage(
'U', 2, a, 2, a, 1, ip, ip, w, 1,
548 CALL chkxer(
'DSYTRF_AA_2STAGE', infot, nout, lerr, ok )
550 CALL dsytrf_aa_2stage(
'U', 2, a, 2, a, 8, ip, ip, w, 0,
552 CALL chkxer(
'DSYTRF_AA_2STAGE', infot, nout, lerr, ok )
556 srnamt =
'DSYTRS_AA_2STAGE'
560 CALL chkxer(
'DSYTRS_AA_2STAGE', infot, nout, lerr, ok )
564 CALL chkxer(
'DSYTRS_AA_2STAGE', infot, nout, lerr, ok )
568 CALL chkxer(
'DSYTRS_AA_2STAGE', infot, nout, lerr, ok )
572 CALL chkxer(
'DSYTRS_AA_2STAGE', infot, nout, lerr, ok )
576 CALL chkxer(
'DSYTRS_AA_2STAGE', infot, nout, lerr, ok )
580 CALL chkxer(
'DSYTRS_AA_STAGE', infot, nout, lerr, ok )
581 ELSE IF( lsamen( 2, c2,
'SP' ) )
THEN
591 CALL dsptrf(
'/', 0, a, ip, info )
592 CALL chkxer(
'DSPTRF', infot, nout, lerr, ok )
594 CALL dsptrf(
'U', -1, a, ip, info )
595 CALL chkxer(
'DSPTRF', infot, nout, lerr, ok )
601 CALL dsptri(
'/', 0, a, ip, w, info )
602 CALL chkxer(
'DSPTRI', infot, nout, lerr, ok )
604 CALL dsptri(
'U', -1, a, ip, w, info )
605 CALL chkxer(
'DSPTRI', infot, nout, lerr, ok )
611 CALL dsptrs(
'/', 0, 0, a, ip, b, 1, info )
612 CALL chkxer(
'DSPTRS', infot, nout, lerr, ok )
614 CALL dsptrs(
'U', -1, 0, a, ip, b, 1, info )
615 CALL chkxer(
'DSPTRS', infot, nout, lerr, ok )
617 CALL dsptrs(
'U', 0, -1, a, ip, b, 1, info )
618 CALL chkxer(
'DSPTRS', infot, nout, lerr, ok )
620 CALL dsptrs(
'U', 2, 1, a, ip, b, 1, info )
621 CALL chkxer(
'DSPTRS', infot, nout, lerr, ok )
627 CALL dsprfs(
'/', 0, 0, a, af, ip, b, 1, x, 1, r1, r2, w, iw,
629 CALL chkxer(
'DSPRFS', infot, nout, lerr, ok )
631 CALL dsprfs(
'U', -1, 0, a, af, ip, b, 1, x, 1, r1, r2, w, iw,
633 CALL chkxer(
'DSPRFS', infot, nout, lerr, ok )
635 CALL dsprfs(
'U', 0, -1, a, af, ip, b, 1, x, 1, r1, r2, w, iw,
637 CALL chkxer(
'DSPRFS', infot, nout, lerr, ok )
639 CALL dsprfs(
'U', 2, 1, a, af, ip, b, 1, x, 2, r1, r2, w, iw,
641 CALL chkxer(
'DSPRFS', infot, nout, lerr, ok )
643 CALL dsprfs(
'U', 2, 1, a, af, ip, b, 2, x, 1, r1, r2, w, iw,
645 CALL chkxer(
'DSPRFS', infot, nout, lerr, ok )
651 CALL dspcon(
'/', 0, a, ip, anrm, rcond, w, iw, info )
652 CALL chkxer(
'DSPCON', infot, nout, lerr, ok )
654 CALL dspcon(
'U', -1, a, ip, anrm, rcond, w, iw, info )
655 CALL chkxer(
'DSPCON', infot, nout, lerr, ok )
657 CALL dspcon(
'U', 1, a, ip, -1.0d0, rcond, w, iw, info )
658 CALL chkxer(
'DSPCON', infot, nout, lerr, ok )
663 CALL alaesm( path, ok, nout )