From d1c0c25cd21baff8edfe9273b2f975ac81da2703 Mon Sep 17 00:00:00 2001 From: julie Date: Thu, 12 Apr 2012 00:56:00 +0000 Subject: Follow up to rev r1130 Fix bug bug0088 reported by Mike Pont from NAG on the forum (see http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=2893) Actually there were a lot of problems regarding arguments checking. I tried to correct most of them. Apply the fix propose to all x[he/sy]rfsx.f routines - Use IGNORE_CWISE as suggested to prevent use of unitialize variable PARAMS I also appied the previous TESTING fix to all routines INFO has new value in ZHERFSX (see description of INFO between ZHESVX and ZHESVXX) This is set on line 634 (IF ( INFO .LE. N ) INFO = N + J) of zherfsx.f And this is not handled by the testing LIN/zdrvhex.f I just add .AND. INFO.LE.N at line 638 to avoid raising an error when INFO = N + J At the moment, I would recommand a further look at those routines. ZHE, ZSY led to 182 Tests failing to pass the threshold and the same for complex better than before, but still.... --- SRC/zla_herfsx_extended.f | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'SRC/zla_herfsx_extended.f') diff --git a/SRC/zla_herfsx_extended.f b/SRC/zla_herfsx_extended.f index 577a4af0..9f8c4e38 100644 --- a/SRC/zla_herfsx_extended.f +++ b/SRC/zla_herfsx_extended.f @@ -373,7 +373,7 @@ *> \verbatim *> INFO is INTEGER *> = 0: Successful exit. -*> < 0: if INFO = -i, the ith argument to ZHETRS had an illegal +*> < 0: if INFO = -i, the ith argument to ZLA_HERFSX_EXTENDED had an illegal *> value *> \endverbatim * @@ -428,7 +428,7 @@ $ DZRAT, PREVNORMDX, PREV_DZ_Z, DXRATMAX, $ DZRATMAX, DX_X, DZ_Z, FINAL_DX_X, FINAL_DZ_Z, $ EPS, HUGEVAL, INCR_THRESH - LOGICAL INCR_PREC + LOGICAL INCR_PREC, UPPER COMPLEX*16 ZDUM * .. * .. Parameters .. @@ -479,7 +479,27 @@ * .. * .. Executable Statements .. * - IF (INFO.NE.0) RETURN + INFO = 0 + UPPER = LSAME( UPLO, 'U' ) + IF( .NOT.UPPER .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN + INFO = -2 + ELSE IF( N.LT.0 ) THEN + INFO = -3 + ELSE IF( NRHS.LT.0 ) THEN + INFO = -4 + ELSE IF( LDA.LT.MAX( 1, N ) ) THEN + INFO = -6 + ELSE IF( LDAF.LT.MAX( 1, N ) ) THEN + INFO = -8 + ELSE IF( LDB.LT.MAX( 1, N ) ) THEN + INFO = -13 + ELSE IF( LDY.LT.MAX( 1, N ) ) THEN + INFO = -15 + END IF + IF( INFO.NE.0 ) THEN + CALL XERBLA( 'ZLA_HERFSX_EXTENDED', -INFO ) + RETURN + END IF EPS = DLAMCH( 'Epsilon' ) HUGEVAL = DLAMCH( 'Overflow' ) * Force HUGEVAL to Inf -- cgit v1.2.3