|
206 | 206 | *> The QZ iteration failed. No eigenvectors have been |
207 | 207 | *> calculated, but ALPHAR(j), ALPHAI(j), and BETA(j) |
208 | 208 | *> should be correct for j=INFO+1,...,N. |
209 | | -*> > N: =N+1: other than QZ iteration failed in SLAQZ0. |
| 209 | +*> > N: =N+1: other than QZ iteration failed in SHGEQZ. |
210 | 210 | *> =N+2: error return from STGEVC. |
211 | 211 | *> \endverbatim |
212 | 212 | * |
@@ -260,7 +260,7 @@ SUBROUTINE SGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, |
260 | 260 | LOGICAL LDUMMA( 1 ) |
261 | 261 | * .. |
262 | 262 | * .. External Subroutines .. |
263 | | - EXTERNAL SGEQRF, SGGBAK, SGGBAL, SGGHD3, SLAQZ0, SLABAD, |
| 263 | + EXTERNAL SGEQRF, SGGBAK, SGGBAL, SGGHRD, SHGEQZ, SLABAD, |
264 | 264 | $ SLACPY, SLASCL, SLASET, SORGQR, SORMQR, STGEVC, |
265 | 265 | $ XERBLA |
266 | 266 | * .. |
@@ -330,21 +330,13 @@ SUBROUTINE SGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, |
330 | 330 | * |
331 | 331 | IF( INFO.EQ.0 ) THEN |
332 | 332 | MINWRK = MAX( 1, 8*N ) |
333 | | -* |
334 | | - MAXWRK = MAX( MINWRK, N*( 3 + |
| 333 | + MAXWRK = MAX( 1, N*( 7 + |
335 | 334 | $ ILAENV( 1, 'SGEQRF', ' ', N, 1, N, 0 ) ) ) |
336 | | - MAXWRK = MAX( MAXWRK, N*( 3 + |
| 335 | + MAXWRK = MAX( MAXWRK, N*( 7 + |
337 | 336 | $ ILAENV( 1, 'SORMQR', ' ', N, 1, N, 0 ) ) ) |
338 | 337 | IF( ILVL ) THEN |
339 | | - MAXWRK = MAX( MAXWRK, N*( 3 + |
| 338 | + MAXWRK = MAX( MAXWRK, N*( 7 + |
340 | 339 | $ ILAENV( 1, 'SORGQR', ' ', N, 1, N, -1 ) ) ) |
341 | | - END IF |
342 | | - IF( ILV ) THEN |
343 | | - MAXWRK = MAX( MAXWRK, N*( 2 + 6 * |
344 | | - $ ILAENV( 1, 'SGGHD3', ' ', N, 1, N, 0 ) ) ) |
345 | | - ELSE |
346 | | - MAXWRK = MAX( MAXWRK, 6*N * |
347 | | - $ ILAENV( 1, 'SGGHD3', ' ', N, 1, N, 0 ) ) |
348 | 340 | END IF |
349 | 341 | WORK( 1 ) = MAXWRK |
350 | 342 | * |
@@ -456,28 +448,26 @@ SUBROUTINE SGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, |
456 | 448 | * |
457 | 449 | * Eigenvectors requested -- work on whole matrix. |
458 | 450 | * |
459 | | - IWRK = ITAU |
460 | | - CALL SGGHD3( JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, VL, |
461 | | - $ LDVL, VR, LDVR, WORK( IWRK ), LWORK+1-IWRK, IERR ) |
| 451 | + CALL SGGHRD( JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, VL, |
| 452 | + $ LDVL, VR, LDVR, IERR ) |
462 | 453 | ELSE |
463 | | - IWRK = 1 |
464 | | - CALL SGGHD3( 'N', 'N', IROWS, 1, IROWS, A( ILO, ILO ), LDA, |
465 | | - $ B( ILO, ILO ), LDB, VL, LDVL, VR, LDVR, |
466 | | - $ WORK( IWRK ), LWORK+1-IWRK, IERR ) |
| 454 | + CALL SGGHRD( 'N', 'N', IROWS, 1, IROWS, A( ILO, ILO ), LDA, |
| 455 | + $ B( ILO, ILO ), LDB, VL, LDVL, VR, LDVR, IERR ) |
467 | 456 | END IF |
468 | 457 | * |
469 | 458 | * Perform QZ algorithm (Compute eigenvalues, and optionally, the |
470 | 459 | * Schur forms and Schur vectors) |
471 | 460 | * (Workspace: need N) |
472 | 461 | * |
| 462 | + IWRK = ITAU |
473 | 463 | IF( ILV ) THEN |
474 | 464 | CHTEMP = 'S' |
475 | 465 | ELSE |
476 | 466 | CHTEMP = 'E' |
477 | 467 | END IF |
478 | | - CALL SLAQZ0( CHTEMP, JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, |
| 468 | + CALL SHGEQZ( CHTEMP, JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, |
479 | 469 | $ ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, |
480 | | - $ WORK( IWRK ), LWORK+1-IWRK, 0, IERR ) |
| 470 | + $ WORK( IWRK ), LWORK+1-IWRK, IERR ) |
481 | 471 | IF( IERR.NE.0 ) THEN |
482 | 472 | IF( IERR.GT.0 .AND. IERR.LE.N ) THEN |
483 | 473 | INFO = IERR |
|
0 commit comments