diff --git a/SRC/cgecon.f b/SRC/cgecon.f index af3a50c6a1..ed705f796a 100644 --- a/SRC/cgecon.f +++ b/SRC/cgecon.f @@ -106,7 +106,7 @@ *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value -*> =-5: if ANORM is NAN or negative. +*> = 1: RCOND = NaN. *> \endverbatim * * Authors: @@ -183,7 +183,7 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 - ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN + ELSE IF( ANORM.LT.ZERO ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN @@ -199,6 +199,10 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, RETURN ELSE IF( ANORM.EQ.ZERO ) THEN RETURN + ELSE IF( SISNAN( ANORM ) ) THEN + RCOND = ANORM + INFO = 1 + RETURN END IF * SMLNUM = SLAMCH( 'Safe minimum' ) @@ -258,6 +262,11 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, * IF( AINVNM.NE.ZERO ) $ RCOND = ( ONE / AINVNM ) / ANORM +* +* Check for NaNs +* + IF( SISNAN( RCOND ) ) + $ INFO = 1 * 20 CONTINUE RETURN diff --git a/SRC/dgecon.f b/SRC/dgecon.f index 5e6dacebf1..40361a318e 100644 --- a/SRC/dgecon.f +++ b/SRC/dgecon.f @@ -106,7 +106,7 @@ *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value -*> =-5: if ANORM is NAN or negative. +*> = 1: RCOND = NaN. *> \endverbatim * * Authors: @@ -176,7 +176,7 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 - ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN + ELSE IF( ANORM.LT.ZERO ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN @@ -192,6 +192,10 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, RETURN ELSE IF( ANORM.EQ.ZERO ) THEN RETURN + ELSE IF( DISNAN( ANORM ) ) THEN + RCOND = ANORM + INFO = 1 + RETURN END IF * SMLNUM = DLAMCH( 'Safe minimum' ) @@ -250,6 +254,11 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, * IF( AINVNM.NE.ZERO ) $ RCOND = ( ONE / AINVNM ) / ANORM +* +* Check for NaNs +* + IF( DISNAN( RCOND ) ) + $ INFO = 1 * 20 CONTINUE RETURN diff --git a/SRC/sgecon.f b/SRC/sgecon.f index 64b96bf1f9..49c581a9b1 100644 --- a/SRC/sgecon.f +++ b/SRC/sgecon.f @@ -106,7 +106,7 @@ *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value -*> =-5: if ANORM is NAN or negative. +*> = 1: RCOND = NaN. *> \endverbatim * * Authors: @@ -176,7 +176,7 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 - ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN + ELSE IF( ANORM.LT.ZERO ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN @@ -192,6 +192,10 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, RETURN ELSE IF( ANORM.EQ.ZERO ) THEN RETURN + ELSE IF( SISNAN( ANORM ) ) THEN + RCOND = ANORM + INFO = 1 + RETURN END IF * SMLNUM = SLAMCH( 'Safe minimum' ) @@ -250,6 +254,11 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK, * IF( AINVNM.NE.ZERO ) $ RCOND = ( ONE / AINVNM ) / ANORM +* +* Check for NaNs +* + IF( SISNAN( RCOND ) ) + $ INFO = 1 * 20 CONTINUE RETURN diff --git a/SRC/zgecon.f b/SRC/zgecon.f index 03fa09421f..0f8bba18e0 100644 --- a/SRC/zgecon.f +++ b/SRC/zgecon.f @@ -106,7 +106,7 @@ *> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value -*> =-5: if ANORM is NAN or negative. +*> = 1: RCOND = NaN. *> \endverbatim * * Authors: @@ -183,7 +183,7 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 - ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN + ELSE IF( ANORM.LT.ZERO ) THEN INFO = -5 END IF IF( INFO.NE.0 ) THEN @@ -199,6 +199,10 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, RETURN ELSE IF( ANORM.EQ.ZERO ) THEN RETURN + ELSE IF( DISNAN( ANORM ) ) THEN + RCOND = ANORM + INFO = 1 + RETURN END IF * SMLNUM = DLAMCH( 'Safe minimum' ) @@ -258,6 +262,11 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, * IF( AINVNM.NE.ZERO ) $ RCOND = ( ONE / AINVNM ) / ANORM +* +* Check for NaNs +* + IF( DISNAN( RCOND ) ) + $ INFO = 1 * 20 CONTINUE RETURN