--- rpl/lapack/lapack/dhgeqz.f 2011/11/21 22:19:29 1.10 +++ rpl/lapack/lapack/dhgeqz.f 2016/08/27 15:27:09 1.16 @@ -211,12 +211,12 @@ *> \param[in,out] Q *> \verbatim *> Q is DOUBLE PRECISION array, dimension (LDQ, N) -*> On entry, if COMPZ = 'V', the orthogonal matrix Q1 used in +*> On entry, if COMPQ = 'V', the orthogonal matrix Q1 used in *> the reduction of (A,B) to generalized Hessenberg form. -*> On exit, if COMPZ = 'I', the orthogonal matrix of left Schur -*> vectors of (H,T), and if COMPZ = 'V', the orthogonal matrix +*> On exit, if COMPQ = 'I', the orthogonal matrix of left Schur +*> vectors of (H,T), and if COMPQ = 'V', the orthogonal matrix *> of left Schur vectors of (A,B). -*> Not referenced if COMPZ = 'N'. +*> Not referenced if COMPQ = 'N'. *> \endverbatim *> *> \param[in] LDQ @@ -282,7 +282,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \date November 2011 +*> \date June 2016 * *> \ingroup doubleGEcomputational * @@ -304,10 +304,10 @@ $ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, $ LWORK, INFO ) * -* -- LAPACK computational routine (version 3.4.0) -- +* -- LAPACK computational routine (version 3.6.1) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2011 +* June 2016 * * .. Scalar Arguments .. CHARACTER COMPQ, COMPZ, JOB @@ -739,9 +739,9 @@ * Exceptional shift. Chosen for no particularly good reason. * (Single shift only.) * - IF( ( DBLE( MAXIT )*SAFMIN )*ABS( H( ILAST-1, ILAST ) ).LT. + IF( ( DBLE( MAXIT )*SAFMIN )*ABS( H( ILAST, ILAST-1 ) ).LT. $ ABS( T( ILAST-1, ILAST-1 ) ) ) THEN - ESHIFT = ESHIFT + H( ILAST-1, ILAST ) / + ESHIFT = H( ILAST, ILAST-1 ) / $ T( ILAST-1, ILAST-1 ) ELSE ESHIFT = ESHIFT + ONE / ( SAFMIN*DBLE( MAXIT ) ) @@ -759,6 +759,16 @@ $ T( ILAST-1, ILAST-1 ), LDT, SAFMIN*SAFETY, S1, $ S2, WR, WR2, WI ) * + IF ( ABS( (WR/S1)*T( ILAST, ILAST ) - H( ILAST, ILAST ) ) + $ .GT. ABS( (WR2/S2)*T( ILAST, ILAST ) + $ - H( ILAST, ILAST ) ) ) THEN + TEMP = WR + WR = WR2 + WR2 = TEMP + TEMP = S1 + S1 = S2 + S2 = TEMP + END IF TEMP = MAX( S1, SAFMIN*MAX( ONE, ABS( WR ), ABS( WI ) ) ) IF( WI.NE.ZERO ) $ GO TO 200 @@ -920,6 +930,7 @@ Z( J, ILAST ) = -Z( J, ILAST ) 220 CONTINUE END IF + B22 = -B22 END IF * * Step 2: Compute ALPHAR, ALPHAI, and BETA (see refs.)