version 1.9, 2011/11/21 20:42:53
|
version 1.17, 2016/08/27 15:34:24
|
Line 211
|
Line 211
|
*> \param[in,out] Q |
*> \param[in,out] Q |
*> \verbatim |
*> \verbatim |
*> Q is DOUBLE PRECISION array, dimension (LDQ, N) |
*> 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. |
*> the reduction of (A,B) to generalized Hessenberg form. |
*> On exit, if COMPZ = 'I', the orthogonal matrix of left Schur |
*> On exit, if COMPQ = 'I', the orthogonal matrix of left Schur |
*> vectors of (H,T), and if COMPZ = 'V', the orthogonal matrix |
*> vectors of (H,T), and if COMPQ = 'V', the orthogonal matrix |
*> of left Schur vectors of (A,B). |
*> of left Schur vectors of (A,B). |
*> Not referenced if COMPZ = 'N'. |
*> Not referenced if COMPQ = 'N'. |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] LDQ |
*> \param[in] LDQ |
Line 282
|
Line 282
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \date June 2016 |
* |
* |
*> \ingroup doubleGEcomputational |
*> \ingroup doubleGEcomputational |
* |
* |
Line 304
|
Line 304
|
$ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, |
$ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, |
$ LWORK, INFO ) |
$ 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, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* November 2011 |
* June 2016 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER COMPQ, COMPZ, JOB |
CHARACTER COMPQ, COMPZ, JOB |
Line 739
|
Line 739
|
* Exceptional shift. Chosen for no particularly good reason. |
* Exceptional shift. Chosen for no particularly good reason. |
* (Single shift only.) |
* (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 |
$ ABS( T( ILAST-1, ILAST-1 ) ) ) THEN |
ESHIFT = ESHIFT + H( ILAST-1, ILAST ) / |
ESHIFT = H( ILAST, ILAST-1 ) / |
$ T( ILAST-1, ILAST-1 ) |
$ T( ILAST-1, ILAST-1 ) |
ELSE |
ELSE |
ESHIFT = ESHIFT + ONE / ( SAFMIN*DBLE( MAXIT ) ) |
ESHIFT = ESHIFT + ONE / ( SAFMIN*DBLE( MAXIT ) ) |
Line 759
|
Line 759
|
$ T( ILAST-1, ILAST-1 ), LDT, SAFMIN*SAFETY, S1, |
$ T( ILAST-1, ILAST-1 ), LDT, SAFMIN*SAFETY, S1, |
$ S2, WR, WR2, WI ) |
$ 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 ) ) ) |
TEMP = MAX( S1, SAFMIN*MAX( ONE, ABS( WR ), ABS( WI ) ) ) |
IF( WI.NE.ZERO ) |
IF( WI.NE.ZERO ) |
$ GO TO 200 |
$ GO TO 200 |
Line 920
|
Line 930
|
Z( J, ILAST ) = -Z( J, ILAST ) |
Z( J, ILAST ) = -Z( J, ILAST ) |
220 CONTINUE |
220 CONTINUE |
END IF |
END IF |
|
B22 = -B22 |
END IF |
END IF |
* |
* |
* Step 2: Compute ALPHAR, ALPHAI, and BETA (see refs.) |
* Step 2: Compute ALPHAR, ALPHAI, and BETA (see refs.) |