206206* > The QZ iteration failed. No eigenvectors have been
207207* > calculated, but ALPHAR(j), ALPHAI(j), and BETA(j)
208208* > should be correct for j=INFO+1,...,N.
209- * > > N: =N+1: other than QZ iteration failed in DHGEQZ .
209+ * > > N: =N+1: other than QZ iteration failed in DLAQZ0 .
210210* > =N+2: error return from DTGEVC.
211211* > \endverbatim
212212*
@@ -260,7 +260,7 @@ SUBROUTINE DGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI,
260260 LOGICAL LDUMMA( 1 )
261261* ..
262262* .. External Subroutines ..
263- EXTERNAL DGEQRF, DGGBAK, DGGBAL, DGGHRD, DHGEQZ , DLABAD,
263+ EXTERNAL DGEQRF, DGGBAK, DGGBAL, DGGHD3, DLAQZ0 , DLABAD,
264264 $ DLACPY,DLASCL, DLASET, DORGQR, DORMQR, DTGEVC,
265265 $ XERBLA
266266* ..
@@ -337,6 +337,8 @@ SUBROUTINE DGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI,
337337 IF ( ILVL ) THEN
338338 MAXWRK = MAX ( MAXWRK, N* ( 7 +
339339 $ ILAENV( 1 , ' DORGQR' , ' ' , N, 1 , N, - 1 ) ) )
340+ MAXWRK = MAX ( MAXWRK, N* ( 7 +
341+ $ ILAENV( 1 , ' DGGHD3' , ' ' , N, 1 , N, 0 ) ) )
340342 END IF
341343 WORK( 1 ) = MAXWRK
342344*
@@ -448,11 +450,12 @@ SUBROUTINE DGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI,
448450*
449451* Eigenvectors requested -- work on whole matrix.
450452*
451- CALL DGGHRD ( JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, VL,
452- $ LDVL, VR, LDVR, IERR )
453+ CALL DGGHD3 ( JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB, VL,
454+ $ LDVL, VR, LDVR, WORK, LWORK +1 - IWRK, IERR )
453455 ELSE
454- CALL DGGHRD( ' N' , ' N' , IROWS, 1 , IROWS, A( ILO, ILO ), LDA,
455- $ B( ILO, ILO ), LDB, VL, LDVL, VR, LDVR, IERR )
456+ CALL DGGHD3( ' N' , ' N' , IROWS, 1 , IROWS, A( ILO, ILO ), LDA,
457+ $ B( ILO, ILO ), LDB, VL, LDVL, VR, LDVR,
458+ $ WORK, LWORK+1 - IWRK, IERR )
456459 END IF
457460*
458461* Perform QZ algorithm (Compute eigenvalues, and optionally, the
@@ -465,9 +468,9 @@ SUBROUTINE DGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI,
465468 ELSE
466469 CHTEMP = ' E'
467470 END IF
468- CALL DHGEQZ ( CHTEMP, JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB,
471+ CALL DLAQZ0 ( CHTEMP, JOBVL, JOBVR, N, ILO, IHI, A, LDA, B, LDB,
469472 $ ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR,
470- $ WORK( IWRK ), LWORK+1 - IWRK, IERR )
473+ $ WORK( IWRK ), LWORK+1 - IWRK, 0 , IERR )
471474 IF ( IERR.NE. 0 ) THEN
472475 IF ( IERR.GT. 0 .AND. IERR.LE. N ) THEN
473476 INFO = IERR
0 commit comments