version 1.4, 2010/08/06 15:32:50
|
version 1.5, 2010/08/07 13:18:09
|
Line 1
|
Line 1
|
SUBROUTINE ZTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, |
SUBROUTINE ZTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, |
$ LDZ, J1, INFO ) |
$ LDZ, J1, INFO ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.2) -- |
* -- LAPACK auxiliary routine (version 3.2.2) -- |
* -- 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 2006 |
* June 2010 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
LOGICAL WANTQ, WANTZ |
LOGICAL WANTQ, WANTZ |
Line 118
|
Line 118
|
COMPLEX*16 CZERO, CONE |
COMPLEX*16 CZERO, CONE |
PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ), |
PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ), |
$ CONE = ( 1.0D+0, 0.0D+0 ) ) |
$ CONE = ( 1.0D+0, 0.0D+0 ) ) |
DOUBLE PRECISION TEN |
DOUBLE PRECISION TWENTY |
PARAMETER ( TEN = 10.0D+0 ) |
PARAMETER ( TWENTY = 2.0D+1 ) |
INTEGER LDST |
INTEGER LDST |
PARAMETER ( LDST = 2 ) |
PARAMETER ( LDST = 2 ) |
LOGICAL WANDS |
LOGICAL WANDS |
Line 173
|
Line 173
|
CALL ZLACPY( 'Full', M, M, T, LDST, WORK( M*M+1 ), M ) |
CALL ZLACPY( 'Full', M, M, T, LDST, WORK( M*M+1 ), M ) |
CALL ZLASSQ( 2*M*M, WORK, 1, SCALE, SUM ) |
CALL ZLASSQ( 2*M*M, WORK, 1, SCALE, SUM ) |
SA = SCALE*SQRT( SUM ) |
SA = SCALE*SQRT( SUM ) |
THRESH = MAX( TEN*EPS*SA, SMLNUM ) |
* |
|
* THRES has been changed from |
|
* THRESH = MAX( TEN*EPS*SA, SMLNUM ) |
|
* to |
|
* THRESH = MAX( TWENTY*EPS*SA, SMLNUM ) |
|
* on 04/01/10. |
|
* "Bug" reported by Ondra Kamenik, confirmed by Julie Langou, fixed by |
|
* Jim Demmel and Guillaume Revy. See forum post 1783. |
|
* |
|
THRESH = MAX( TWENTY*EPS*SA, SMLNUM ) |
* |
* |
* Compute unitary QL and RQ that swap 1-by-1 and 1-by-1 blocks |
* Compute unitary QL and RQ that swap 1-by-1 and 1-by-1 blocks |
* using Givens rotations and perform the swap tentatively. |
* using Givens rotations and perform the swap tentatively. |