78 REAL R( NMAX ), R1( NMAX ), R2( NMAX )
79 COMPLEX A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
80 $ E( NMAX), W( 2*NMAX ), X( NMAX )
100 COMMON / infoc / infot, nout, ok, lerr
101 COMMON / srnamc / srnamt
104 INTRINSIC cmplx, real
109 WRITE( nout, fmt = * )
116 a( i, j ) =
cmplx( 1. / real( i+j ), -1. / real( i+j ) )
130 IF( lsamen( 2, c2,
'SY' ) )
THEN
140 CALL csytrf(
'/', 0, a, 1, ip, w, 1, info )
141 CALL chkxer(
'CSYTRF', infot, nout, lerr, ok )
143 CALL csytrf(
'U', -1, a, 1, ip, w, 1, info )
144 CALL chkxer(
'CSYTRF', infot, nout, lerr, ok )
146 CALL csytrf(
'U', 2, a, 1, ip, w, 4, info )
147 CALL chkxer(
'CSYTRF', infot, nout, lerr, ok )
149 CALL csytrf(
'U', 0, a, 1, ip, w, 0, info )
150 CALL chkxer(
'CSYTRF', infot, nout, lerr, ok )
152 CALL csytrf(
'U', 0, a, 1, ip, w, -2, info )
153 CALL chkxer(
'CSYTRF', infot, nout, lerr, ok )
159 CALL csytf2(
'/', 0, a, 1, ip, info )
160 CALL chkxer(
'CSYTF2', infot, nout, lerr, ok )
162 CALL csytf2(
'U', -1, a, 1, ip, info )
163 CALL chkxer(
'CSYTF2', infot, nout, lerr, ok )
165 CALL csytf2(
'U', 2, a, 1, ip, info )
166 CALL chkxer(
'CSYTF2', infot, nout, lerr, ok )
172 CALL csytri(
'/', 0, a, 1, ip, w, info )
173 CALL chkxer(
'CSYTRI', infot, nout, lerr, ok )
175 CALL csytri(
'U', -1, a, 1, ip, w, info )
176 CALL chkxer(
'CSYTRI', infot, nout, lerr, ok )
178 CALL csytri(
'U', 2, a, 1, ip, w, info )
179 CALL chkxer(
'CSYTRI', infot, nout, lerr, ok )
185 CALL csytri2(
'/', 0, a, 1, ip, w, 1, info )
186 CALL chkxer(
'CSYTRI2', infot, nout, lerr, ok )
188 CALL csytri2(
'U', -1, a, 1, ip, w, 1, info )
189 CALL chkxer(
'CSYTRI2', infot, nout, lerr, ok )
191 CALL csytri2(
'U', 2, a, 1, ip, w, 1, info )
192 CALL chkxer(
'CSYTRI2', infot, nout, lerr, ok )
198 CALL csytri2x( '/
', 0, A, 1, IP, W, 1, INFO )
199 CALL CHKXER( 'csytri2x', INFOT, NOUT, LERR, OK )
201 CALL CSYTRI2X( 'u
', -1, A, 1, IP, W, 1, INFO )
202 CALL CHKXER( 'csytri2x', INFOT, NOUT, LERR, OK )
204 CALL CSYTRI2X( 'u
', 2, A, 1, IP, W, 1, INFO )
205 CALL CHKXER( 'csytri2x', INFOT, NOUT, LERR, OK )
211 CALL CSYTRS( '/
', 0, 0, A, 1, IP, B, 1, INFO )
212 CALL CHKXER( 'csytrs', INFOT, NOUT, LERR, OK )
214 CALL CSYTRS( 'u
', -1, 0, A, 1, IP, B, 1, INFO )
215 CALL CHKXER( 'csytrs', INFOT, NOUT, LERR, OK )
217 CALL CSYTRS( 'u
', 0, -1, A, 1, IP, B, 1, INFO )
218 CALL CHKXER( 'csytrs', INFOT, NOUT, LERR, OK )
220 CALL CSYTRS( 'u
', 2, 1, A, 1, IP, B, 2, INFO )
221 CALL CHKXER( 'csytrs', INFOT, NOUT, LERR, OK )
223 CALL CSYTRS( 'u
', 2, 1, A, 2, IP, B, 1, INFO )
224 CALL CHKXER( 'csytrs', INFOT, NOUT, LERR, OK )
230 CALL CSYRFS( '/
', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
232 CALL CHKXER( 'csyrfs', INFOT, NOUT, LERR, OK )
234 CALL CSYRFS( 'u
', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
236 CALL CHKXER( 'csyrfs', INFOT, NOUT, LERR, OK )
238 CALL CSYRFS( 'u
', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
240 CALL CHKXER( 'csyrfs', INFOT, NOUT, LERR, OK )
242 CALL CSYRFS( 'u
', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
244 CALL CHKXER( 'csyrfs', INFOT, NOUT, LERR, OK )
246 CALL CSYRFS( 'u
', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
248 CALL CHKXER( 'csyrfs', INFOT, NOUT, LERR, OK )
250 CALL CSYRFS( 'u
', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
252 CALL CHKXER( 'csyrfs', INFOT, NOUT, LERR, OK )
254 CALL CSYRFS( 'u
', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
256 CALL CHKXER( 'csyrfs', INFOT, NOUT, LERR, OK )
262 CALL CSYCON( '/
', 0, A, 1, IP, ANRM, RCOND, W, INFO )
263 CALL CHKXER( 'csycon', INFOT, NOUT, LERR, OK )
265 CALL CSYCON( 'u
', -1, A, 1, IP, ANRM, RCOND, W, INFO )
266 CALL CHKXER( 'csycon', INFOT, NOUT, LERR, OK )
268 CALL CSYCON( 'u
', 2, A, 1, IP, ANRM, RCOND, W, INFO )
269 CALL CHKXER( 'csycon', INFOT, NOUT, LERR, OK )
271 CALL CSYCON( 'u
', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
272 CALL CHKXER( 'csycon', INFOT, NOUT, LERR, OK )
274 ELSE IF( LSAMEN( 2, C2, 'sr
' ) ) THEN
284 CALL CSYTRF_ROOK( '/
', 0, A, 1, IP, W, 1, INFO )
285 CALL CHKXER( 'csytrf_rook', INFOT, NOUT, LERR, OK )
287 CALL CSYTRF_ROOK( 'u
', -1, A, 1, IP, W, 1, INFO )
288 CALL CHKXER( 'csytrf_rook', INFOT, NOUT, LERR, OK )
290 CALL CSYTRF_ROOK( 'u
', 2, A, 1, IP, W, 4, INFO )
291 CALL CHKXER( 'csytrf_rook', INFOT, NOUT, LERR, OK )
293 CALL CSYTRF_ROOK( 'u
', 0, A, 1, IP, W, 0, INFO )
294 CALL CHKXER( 'csytrf_rook', INFOT, NOUT, LERR, OK )
296 CALL CSYTRF_ROOK( 'u
', 0, A, 1, IP, W, -2, INFO )
297 CALL CHKXER( 'csytrf_rook', INFOT, NOUT, LERR, OK )
303 CALL CSYTF2_ROOK( '/
', 0, A, 1, IP, INFO )
304 CALL CHKXER( 'csytf2_rook', INFOT, NOUT, LERR, OK )
306 CALL CSYTF2_ROOK( 'u
', -1, A, 1, IP, INFO )
307 CALL CHKXER( 'csytf2_rook', INFOT, NOUT, LERR, OK )
309 CALL CSYTF2_ROOK( 'u
', 2, A, 1, IP, INFO )
310 CALL CHKXER( 'csytf2_rook', INFOT, NOUT, LERR, OK )
316 CALL CSYTRI_ROOK( '/
', 0, A, 1, IP, W, INFO )
317 CALL CHKXER( 'csytri_rook', INFOT, NOUT, LERR, OK )
319 CALL CSYTRI_ROOK( 'u
', -1, A, 1, IP, W, INFO )
320 CALL CHKXER( 'csytri_rook', INFOT, NOUT, LERR, OK )
322 CALL CSYTRI_ROOK( 'u
', 2, A, 1, IP, W, INFO )
323 CALL CHKXER( 'csytri_rook', INFOT, NOUT, LERR, OK )
329 CALL CSYTRS_ROOK( '/
', 0, 0, A, 1, IP, B, 1, INFO )
330 CALL CHKXER( 'csytrs_rook', INFOT, NOUT, LERR, OK )
332 CALL CSYTRS_ROOK( 'u
', -1, 0, A, 1, IP, B, 1, INFO )
333 CALL CHKXER( 'csytrs_rook', INFOT, NOUT, LERR, OK )
335 CALL CSYTRS_ROOK( 'u
', 0, -1, A, 1, IP, B, 1, INFO )
336 CALL CHKXER( 'csytrs_rook', INFOT, NOUT, LERR, OK )
338 CALL CSYTRS_ROOK( 'u
', 2, 1, A, 1, IP, B, 2, INFO )
339 CALL CHKXER( 'csytrs_rook', INFOT, NOUT, LERR, OK )
341 CALL CSYTRS_ROOK( 'u
', 2, 1, A, 2, IP, B, 1, INFO )
342 CALL CHKXER( 'csytrs_rook', INFOT, NOUT, LERR, OK )
348 CALL CSYCON_ROOK( '/
', 0, A, 1, IP, ANRM, RCOND, W, INFO )
349 CALL CHKXER( 'csycon_rook', INFOT, NOUT, LERR, OK )
351 CALL CSYCON_ROOK( 'u
', -1, A, 1, IP, ANRM, RCOND, W, INFO )
352 CALL CHKXER( 'csycon_rook', INFOT, NOUT, LERR, OK )
354 CALL CSYCON_ROOK( 'u
', 2, A, 1, IP, ANRM, RCOND, W, INFO )
355 CALL CHKXER( 'csycon_rook', INFOT, NOUT, LERR, OK )
357 CALL CSYCON_ROOK( 'u
', 1, A, 1, IP, -ANRM, RCOND, W, INFO )
358 CALL CHKXER( 'csycon_rook', INFOT, NOUT, LERR, OK )
360 ELSE IF( LSAMEN( 2, C2, 'sk
' ) ) THEN
374 CALL CSYTRF_RK( '/
', 0, A, 1, E, IP, W, 1, INFO )
375 CALL CHKXER( 'csytrf_rk', INFOT, NOUT, LERR, OK )
377 CALL CSYTRF_RK( 'u
', -1, A, 1, E, IP, W, 1, INFO )
378 CALL CHKXER( 'csytrf_rk', INFOT, NOUT, LERR, OK )
380 CALL CSYTRF_RK( 'u
', 2, A, 1, E, IP, W, 4, INFO )
381 CALL CHKXER( 'csytrf_rk', INFOT, NOUT, LERR, OK )
383 CALL CSYTRF_RK( 'u
', 0, A, 1, E, IP, W, 0, INFO )
384 CALL CHKXER( 'csytrf_rk', INFOT, NOUT, LERR, OK )
386 CALL CSYTRF_RK( 'u
', 0, A, 1, E, IP, W, -2, INFO )
387 CALL CHKXER( 'csytrf_rk', INFOT, NOUT, LERR, OK )
393 CALL CSYTF2_RK( '/
', 0, A, 1, E, IP, INFO )
394 CALL CHKXER( 'csytf2_rk', INFOT, NOUT, LERR, OK )
396 CALL CSYTF2_RK( 'u
', -1, A, 1, E, IP, INFO )
397 CALL CHKXER( 'csytf2_rk', INFOT, NOUT, LERR, OK )
399 CALL CSYTF2_RK( 'u
', 2, A, 1, E, IP, INFO )
400 CALL CHKXER( 'csytf2_rk', INFOT, NOUT, LERR, OK )
406 CALL CSYTRI_3( '/
', 0, A, 1, E, IP, W, 1, INFO )
407 CALL CHKXER( 'csytri_3', INFOT, NOUT, LERR, OK )
409 CALL CSYTRI_3( 'u
', -1, A, 1, E, IP, W, 1, INFO )
410 CALL CHKXER( 'csytri_3', INFOT, NOUT, LERR, OK )
412 CALL CSYTRI_3( 'u
', 2, A, 1, E, IP, W, 1, INFO )
413 CALL CHKXER( 'csytri_3', INFOT, NOUT, LERR, OK )
415 CALL CSYTRI_3( 'u
', 0, A, 1, E, IP, W, 0, INFO )
416 CALL CHKXER( 'csytri_3', INFOT, NOUT, LERR, OK )
418 CALL CSYTRI_3( 'u
', 0, A, 1, E, IP, W, -2, INFO )
419 CALL CHKXER( 'csytri_3', infot, nout, lerr, ok )
425 CALL csytri_3x(
'/', 0, a, 1, e, ip, w, 1, info )
426 CALL chkxer(
'CSYTRI_3X', infot, nout, lerr, ok )
428 CALL csytri_3x(
'U', -1, a, 1, e, ip, w, 1, info )
429 CALL chkxer(
'CSYTRI_3X', infot, nout, lerr, ok )
431 CALL csytri_3x(
'U', 2, a, 1, e, ip, w, 1, info )
432 CALL chkxer(
'CSYTRI_3X', infot, nout, lerr, ok )
438 CALL CSYTRS_3( '/
', 0, 0, A, 1, E, IP, B, 1, INFO )
439 CALL CHKXER( 'csytrs_3', INFOT, NOUT, LERR, OK )
441 CALL CSYTRS_3( 'u
', -1, 0, A, 1, E, IP, B, 1, INFO )
442 CALL CHKXER( 'csytrs_3', INFOT, NOUT, LERR, OK )
444 CALL CSYTRS_3( 'u
', 0, -1, A, 1, E, IP, B, 1, INFO )
445 CALL CHKXER( 'csytrs_3', INFOT, NOUT, LERR, OK )
447 CALL CSYTRS_3( 'u
', 2, 1, A, 1, E, IP, B, 2, INFO )
448 CALL CHKXER( 'csytrs_3', INFOT, NOUT, LERR, OK )
450 CALL CSYTRS_3( 'u
', 2, 1, A, 2, E, IP, B, 1, INFO )
451 CALL CHKXER( 'csytrs_3', INFOT, NOUT, LERR, OK )
457 CALL CSYCON_3( '/
', 0, A, 1, E, IP, ANRM, RCOND, W, INFO )
458 CALL CHKXER( 'csycon_3', INFOT, NOUT, LERR, OK )
460 CALL CSYCON_3( 'u
', -1, A, 1, E, IP, ANRM, RCOND, W, INFO )
461 CALL CHKXER( 'csycon_3', INFOT, NOUT, LERR, OK )
463 CALL CSYCON_3( 'u
', 2, A, 1, E, IP, ANRM, RCOND, W, INFO )
464 CALL CHKXER( 'csycon_3', INFOT, NOUT, LERR, OK )
466 CALL CSYCON_3( 'u
', 1, A, 1, E, IP, -1.0E0, RCOND, W, INFO)
467 CALL CHKXER( 'csycon_3', INFOT, NOUT, LERR, OK )
469 ELSE IF( LSAMEN( 2, C2, 'sp
' ) ) THEN
479 CALL CSPTRF( '/
', 0, A, IP, INFO )
480 CALL CHKXER( 'csptrf', INFOT, NOUT, LERR, OK )
482 CALL CSPTRF( 'u
', -1, A, IP, INFO )
483 CALL CHKXER( 'csptrf', INFOT, NOUT, LERR, OK )
489 CALL CSPTRI( '/
', 0, A, IP, W, INFO )
490 CALL CHKXER( 'csptri', INFOT, NOUT, LERR, OK )
492 CALL CSPTRI( 'u
', -1, A, IP, W, INFO )
493 CALL CHKXER( 'csptri', INFOT, NOUT, LERR, OK )
499 CALL CSPTRS( '/
', 0, 0, A, IP, B, 1, INFO )
500 CALL CHKXER( 'csptrs', INFOT, NOUT, LERR, OK )
502 CALL CSPTRS( 'u
', -1, 0, A, IP, B, 1, INFO )
503 CALL CHKXER( 'csptrs', INFOT, NOUT, LERR, OK )
505 CALL CSPTRS( 'u
', 0, -1, A, IP, B, 1, INFO )
506 CALL CHKXER( 'csptrs', INFOT, NOUT, LERR, OK )
508 CALL CSPTRS( 'u
', 2, 1, A, IP, B, 1, INFO )
509 CALL CHKXER( 'csptrs', INFOT, NOUT, LERR, OK )
515 CALL CSPRFS( '/
', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
517 CALL CHKXER( 'csprfs', INFOT, NOUT, LERR, OK )
519 CALL CSPRFS( 'u
', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
521 CALL CHKXER( 'csprfs', INFOT, NOUT, LERR, OK )
523 CALL CSPRFS( 'u
', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, R,
525 CALL CHKXER( 'csprfs', INFOT, NOUT, LERR, OK )
527 CALL CSPRFS( 'u
', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, R,
529 CALL CHKXER( 'csprfs', INFOT, NOUT, LERR, OK )
531 CALL CSPRFS( 'u
', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, R,
533 CALL CHKXER( 'csprfs', INFOT, NOUT, LERR, OK )
539 CALL CSPCON( '/
', 0, A, IP, ANRM, RCOND, W, INFO )
540 CALL CHKXER( 'cspcon', INFOT, NOUT, LERR, OK )
542 CALL CSPCON( 'u
', -1, A, IP, ANRM, RCOND, W, INFO )
543 CALL CHKXER( 'cspcon', INFOT, NOUT, LERR, OK )
545 CALL CSPCON( 'u
', 1, A, IP, -ANRM, RCOND, W, INFO )
546 CALL CHKXER( 'cspcon', INFOT, NOUT, LERR, OK )
548 ELSE IF( LSAMEN( 2, C2, 'sa
' ) ) THEN
557 CALL CSYTRF_AA( '/
', 0, A, 1, IP, W, 1, INFO )
558 CALL CHKXER( 'csytrf_aa', INFOT, NOUT, LERR, OK )
560 CALL CSYTRF_AA( 'u
', -1, A, 1, IP, W, 1, INFO )
561 CALL CHKXER( 'csytrf_aa', INFOT, NOUT, LERR, OK )
563 CALL CSYTRF_AA( 'u
', 2, A, 1, IP, W, 4, INFO )
564 CALL CHKXER( 'csytrf_aa', INFOT, NOUT, LERR, OK )
566 CALL CSYTRF_AA( 'u
', 0, A, 1, IP, W, 0, INFO )
567 CALL CHKXER( 'csytrf_aa', INFOT, NOUT, LERR, OK )
569 CALL CSYTRF_AA( 'u
', 0, A, 1, IP, W, -2, INFO )
570 CALL CHKXER( 'csytrf_aa', INFOT, NOUT, LERR, OK )
576 CALL CSYTRS_AA( '/
', 0, 0, A, 1, IP, B, 1, W, 1, INFO )
577 CALL CHKXER( 'csytrs_aa', INFOT, NOUT, LERR, OK )
579 CALL CSYTRS_AA( 'u
', -1, 0, A, 1, IP, B, 1, W, 1, INFO )
580 CALL CHKXER( 'csytrs_aa', INFOT, NOUT, LERR, OK )
582 CALL CSYTRS_AA( 'u
', 0, -1, A, 1, IP, B, 1, W, 1, INFO )
583 CALL CHKXER( 'csytrs_aa', INFOT, NOUT, LERR, OK )
585 CALL CSYTRS_AA( 'u
', 2, 1, A, 1, IP, B, 2, W, 1, INFO )
586 CALL CHKXER( 'csytrs_aa', infot, nout, lerr, ok )
588 CALL csytrs_aa(
'U', 2, 1, a, 2, ip, b, 1, w, 1, info )
589 CALL chkxer(
'CSYTRS_AA', infot, nout, lerr, ok )
591 CALL csytrs_aa(
'U', 0, 1, a, 1, ip, b, 1, w, 0, info )
594 CALL CSYTRS_AA( 'u
', 0, 1, A, 1, IP, B, 1, W, -2, INFO )
595 CALL CHKXER( 'csytrs_aa', infot, nout, lerr, ok )
597 ELSE IF( lsamen( 2, c2,
'S2' ) )
THEN
604 srnamt =
'CSYTRF_AA_2STAGE'
606 CALL csytrf_aa_2stage(
'/', 0, a, 1, a, 1, ip, ip, w, 1,
608 CALL chkxer(
'CSYTRF_AA_2STAGE', infot, nout, lerr, ok )
610 CALL csytrf_aa_2stage(
'U', -1, a, 1, a, 1, ip, ip, w, 1,
612 CALL chkxer(
'CSYTRF_AA_2STAGE', infot, nout, lerr, ok )
614 CALL csytrf_aa_2stage(
'U', 2, a, 1, a, 2, ip, ip, w, 1,
616 CALL chkxer(
'CSYTRF_AA_2STAGE', infot, nout, lerr, ok )
618 CALL csytrf_aa_2stage(
'U', 2, a, 2, a, 1, ip, ip, w, 1,
620 CALL chkxer(
'CSYTRF_AA_2STAGE', infot, nout, lerr, ok )
622 CALL csytrf_aa_2stage(
'U', 2, a, 2, a, 8, ip, ip, w, 0,
624 CALL chkxer(
'CSYTRF_AA_2STAGE', infot, nout, lerr, ok )
628 srnamt =
'CSYTRS_AA_2STAGE'
632 CALL chkxer(
'CSYTRS_AA_2STAGE', infot, nout, lerr, ok )
636 CALL chkxer(
'CSYTRS_AA_2STAGE', infot, nout, lerr, ok )
640 CALL chkxer(
'CSYTRS_AA_2STAGE', infot, nout, lerr, ok )
644 CALL chkxer(
'CSYTRS_AA_2STAGE', infot, nout, lerr, ok )
648 CALL chkxer(
'CSYTRS_AA_2STAGE', infot, nout, lerr, ok )
652 CALL chkxer(
'CSYTRS_AA_STAGE', infot, nout, lerr, ok )
658 CALL alaesm( path, ok, nout )