summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjames <james@8a072113-8704-0410-8d35-dd094bca7971>2012-04-17 17:26:31 +0000
committerjames <james@8a072113-8704-0410-8d35-dd094bca7971>2012-04-17 17:26:31 +0000
commit90489aa716f68f31bfac3db4e62c9b41963d098b (patch)
tree8a001f7d0e976b52650e9141192f05a6ca89bace
parentf0b200da5b5bd3233a2d0da2dc1a8d651a66aaba (diff)
downloadlapack-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.f3
-rw-r--r--SRC/dhgeqz.f2
-rw-r--r--SRC/shgeqz.f2
-rw-r--r--SRC/zhgeqz.f3
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
*