diff options
author | james <james@8a072113-8704-0410-8d35-dd094bca7971> | 2012-04-17 17:26:31 +0000 |
---|---|---|
committer | james <james@8a072113-8704-0410-8d35-dd094bca7971> | 2012-04-17 17:26:31 +0000 |
commit | 90489aa716f68f31bfac3db4e62c9b41963d098b (patch) | |
tree | 8a001f7d0e976b52650e9141192f05a6ca89bace | |
parent | f0b200da5b5bd3233a2d0da2dc1a8d651a66aaba (diff) | |
download | lapack-90489aa716f68f31bfac3db4e62c9b41963d098b.tar.gz lapack-90489aa716f68f31bfac3db4e62c9b41963d098b.tar.bz2 lapack-90489aa716f68f31bfac3db4e62c9b41963d098b.zip |
modified exceptional shift strategy so that QZ now works for various pencils (see http://netlib.org/lapack/Errata/vrac/lapack_known_issues.html)
-rw-r--r-- | SRC/chgeqz.f | 3 | ||||
-rw-r--r-- | SRC/dhgeqz.f | 2 | ||||
-rw-r--r-- | SRC/shgeqz.f | 2 | ||||
-rw-r--r-- | SRC/zhgeqz.f | 3 |
4 files changed, 4 insertions, 6 deletions
diff --git a/SRC/chgeqz.f b/SRC/chgeqz.f index 61afd4b7..b7e50fb0 100644 --- a/SRC/chgeqz.f +++ b/SRC/chgeqz.f @@ -743,8 +743,7 @@ * * Exceptional shift. Chosen for no particularly good reason. * - ESHIFT = ESHIFT + CONJG( ( ASCALE*H( ILAST-1, ILAST ) ) / - $ ( BSCALE*T( ILAST-1, ILAST-1 ) ) ) + ESHIFT = ESHIFT + H(ILAST,ILAST-1)/T(ILAST-1,ILAST-1) SHIFT = ESHIFT END IF * diff --git a/SRC/dhgeqz.f b/SRC/dhgeqz.f index edd00d01..db006048 100644 --- a/SRC/dhgeqz.f +++ b/SRC/dhgeqz.f @@ -741,7 +741,7 @@ * IF( ( DBLE( MAXIT )*SAFMIN )*ABS( H( ILAST-1, ILAST ) ).LT. $ ABS( T( ILAST-1, ILAST-1 ) ) ) THEN - ESHIFT = ESHIFT + H( ILAST-1, ILAST ) / + ESHIFT = ESHIFT + H( ILAST, ILAST-1 ) / $ T( ILAST-1, ILAST-1 ) ELSE ESHIFT = ESHIFT + ONE / ( SAFMIN*DBLE( MAXIT ) ) diff --git a/SRC/shgeqz.f b/SRC/shgeqz.f index 0019f2f7..4d2b6bea 100644 --- a/SRC/shgeqz.f +++ b/SRC/shgeqz.f @@ -741,7 +741,7 @@ * IF( ( REAL( MAXIT )*SAFMIN )*ABS( H( ILAST-1, ILAST ) ).LT. $ ABS( T( ILAST-1, ILAST-1 ) ) ) THEN - ESHIFT = ESHIFT + H( ILAST-1, ILAST ) / + ESHIFT = ESHIFT + H( ILAST, ILAST-1 ) / $ T( ILAST-1, ILAST-1 ) ELSE ESHIFT = ESHIFT + ONE / ( SAFMIN*REAL( MAXIT ) ) diff --git a/SRC/zhgeqz.f b/SRC/zhgeqz.f index b96311ac..a81507ce 100644 --- a/SRC/zhgeqz.f +++ b/SRC/zhgeqz.f @@ -744,8 +744,7 @@ * * Exceptional shift. Chosen for no particularly good reason. * - ESHIFT = ESHIFT + DCONJG( ( ASCALE*H( ILAST-1, ILAST ) ) / - $ ( BSCALE*T( ILAST-1, ILAST-1 ) ) ) + ESHIFT = ESHIFT + H(ILAST,ILAST-1)/T(ILAST-1,ILAST-1) SHIFT = ESHIFT END IF * |