---------- Forwarded message ----------
Date: Sun, 10 May 2009 14:45:08 -0600
Subject: [Lapack SVN] r657 - in /lapack/trunk/SRC: cgeesx.f dgeesx.f sgeesx.f
zgeesx.f
Author: langou
Date: Sun May 10 16:45:07 2009
New Revision: 657
URL: https://icl.cs.utk.edu/trac/lapack-dev/changeset/657
Log:
Bug report sent by Alexander V. Kobotov (from Intel) on Mon, 6 Apr 2009 to
"lapack@Domain.Removed".
"(c/z)geesx: no lwork=-1 branch at all, info = -15 is returned while doing
lquery."
I noticed that the S and D version where not exiting after WORKSPACE query as
well.
Thanks Alexander. Bug corrected.
Modified:
lapack/trunk/SRC/cgeesx.f
lapack/trunk/SRC/dgeesx.f
lapack/trunk/SRC/sgeesx.f
lapack/trunk/SRC/zgeesx.f
Modified: lapack/trunk/SRC/cgeesx.f
URL:
https://icl.cs.utk.edu/trac/lapack-dev/file/lapack/trunk/SRC/cgeesx.f?rev=657
==============================================================================
--- lapack/trunk/SRC/cgeesx.f (original)
+++ lapack/trunk/SRC/cgeesx.f Sun May 10 16:45:07 2009
@@ -156,7 +156,7 @@
PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 )
* ..
* .. Local Scalars ..
- LOGICAL SCALEA, WANTSB, WANTSE, WANTSN, WANTST,
+ LOGICAL LQUERY, SCALEA, WANTSB, WANTSE, WANTSN, WANTST,
$ WANTSV, WANTVS
INTEGER HSWORK, I, IBAL, ICOND, IERR, IEVAL, IHI, ILO,
$ ITAU, IWRK, LWRK, MAXWRK, MINWRK
@@ -189,6 +189,8 @@
WANTSE = LSAME( SENSE, 'E' )
WANTSV = LSAME( SENSE, 'V' )
WANTSB = LSAME( SENSE, 'B' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
IF( ( .NOT.WANTVS ) .AND. ( .NOT.LSAME( JOBVS, 'N' ) ) ) THEN
INFO = -1
ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
@@ -243,7 +245,7 @@
END IF
WORK( 1 ) = LWRK
*
- IF( LWORK.LT.MINWRK ) THEN
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -15
END IF
END IF
@@ -251,6 +253,8 @@
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'CGEESX', -INFO )
RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
END IF
*
* Quick return if possible
Modified: lapack/trunk/SRC/dgeesx.f
URL:
https://icl.cs.utk.edu/trac/lapack-dev/file/lapack/trunk/SRC/dgeesx.f?rev=657
==============================================================================
--- lapack/trunk/SRC/dgeesx.f (original)
+++ lapack/trunk/SRC/dgeesx.f Sun May 10 16:45:07 2009
@@ -226,6 +226,7 @@
WANTSV = LSAME( SENSE, 'V' )
WANTSB = LSAME( SENSE, 'B' )
LQUERY = ( LWORK.EQ.-1 .OR. LIWORK.EQ.-1 )
+*
IF( ( .NOT.WANTVS ) .AND. ( .NOT.LSAME( JOBVS, 'N' ) ) ) THEN
INFO = -1
ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
@@ -294,6 +295,8 @@
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'DGEESX', -INFO )
RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
END IF
*
* Quick return if possible
Modified: lapack/trunk/SRC/sgeesx.f
URL:
https://icl.cs.utk.edu/trac/lapack-dev/file/lapack/trunk/SRC/sgeesx.f?rev=657
==============================================================================
--- lapack/trunk/SRC/sgeesx.f (original)
+++ lapack/trunk/SRC/sgeesx.f Sun May 10 16:45:07 2009
@@ -226,6 +226,7 @@
WANTSV = LSAME( SENSE, 'V' )
WANTSB = LSAME( SENSE, 'B' )
LQUERY = ( LWORK.EQ.-1 .OR. LIWORK.EQ.-1 )
+*
IF( ( .NOT.WANTVS ) .AND. ( .NOT.LSAME( JOBVS, 'N' ) ) ) THEN
INFO = -1
ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
@@ -294,6 +295,8 @@
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'SGEESX', -INFO )
RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
END IF
*
* Quick return if possible
Modified: lapack/trunk/SRC/zgeesx.f
URL:
https://icl.cs.utk.edu/trac/lapack-dev/file/lapack/trunk/SRC/zgeesx.f?rev=657
==============================================================================
--- lapack/trunk/SRC/zgeesx.f (original)
+++ lapack/trunk/SRC/zgeesx.f Sun May 10 16:45:07 2009
@@ -156,8 +156,8 @@
PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 )
* ..
* .. Local Scalars ..
- LOGICAL SCALEA, WANTSB, WANTSE, WANTSN, WANTST, WANTSV,
- $ WANTVS
+ LOGICAL LQUERY, SCALEA, WANTSB, WANTSE, WANTSN, WANTST,
+ $ WANTSV, WANTVS
INTEGER HSWORK, I, IBAL, ICOND, IERR, IEVAL, IHI, ILO,
$ ITAU, IWRK, LWRK, MAXWRK, MINWRK
DOUBLE PRECISION ANRM, BIGNUM, CSCALE, EPS, SMLNUM
@@ -189,6 +189,8 @@
WANTSE = LSAME( SENSE, 'E' )
WANTSV = LSAME( SENSE, 'V' )
WANTSB = LSAME( SENSE, 'B' )
+ LQUERY = ( LWORK.EQ.-1 )
+*
IF( ( .NOT.WANTVS ) .AND. ( .NOT.LSAME( JOBVS, 'N' ) ) ) THEN
INFO = -1
ELSE IF( ( .NOT.WANTST ) .AND. ( .NOT.LSAME( SORT, 'N' ) ) ) THEN
@@ -243,7 +245,7 @@
END IF
WORK( 1 ) = LWRK
*
- IF( LWORK.LT.MINWRK ) THEN
+ IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -15
END IF
END IF
@@ -251,6 +253,8 @@
IF( INFO.NE.0 ) THEN
CALL XERBLA( 'ZGEESX', -INFO )
RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
END IF
*
* Quick return if possible
|