summaryrefslogtreecommitdiff
path: root/SRC/zla_herfsx_extended.f
diff options
context:
space:
mode:
authorjulie <julielangou@users.noreply.github.com>2012-04-12 00:56:00 +0000
committerjulie <julielangou@users.noreply.github.com>2012-04-12 00:56:00 +0000
commitd1c0c25cd21baff8edfe9273b2f975ac81da2703 (patch)
treef8e44c4112fca053cb04b9cc2d07fa905ef28c85 /SRC/zla_herfsx_extended.f
parent21199982e23bb604c3a4e61f8dc3b5db69009039 (diff)
downloadlapack-d1c0c25cd21baff8edfe9273b2f975ac81da2703.tar.gz
lapack-d1c0c25cd21baff8edfe9273b2f975ac81da2703.tar.bz2
lapack-d1c0c25cd21baff8edfe9273b2f975ac81da2703.zip
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....
Diffstat (limited to 'SRC/zla_herfsx_extended.f')
-rw-r--r--SRC/zla_herfsx_extended.f26
1 files changed, 23 insertions, 3 deletions
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