From 90489aa716f68f31bfac3db4e62c9b41963d098b Mon Sep 17 00:00:00 2001 From: james Date: Tue, 17 Apr 2012 17:26:31 +0000 Subject: modified exceptional shift strategy so that QZ now works for various pencils (see http://netlib.org/lapack/Errata/vrac/lapack_known_issues.html) --- SRC/chgeqz.f | 3 +-- SRC/dhgeqz.f | 2 +- SRC/shgeqz.f | 2 +- 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 * -- cgit v1.2.3