Skip to content

Commit 9d85a7a

Browse files
authored
Merge pull request #765 from weslleyspereira/master
Check for NaNs in *GECON
2 parents 9067b6b + 5d8a3a8 commit 9d85a7a

File tree

4 files changed

+16
-12
lines changed

4 files changed

+16
-12
lines changed

SRC/cgecon.f

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
*> INFO is INTEGER
107107
*> = 0: successful exit
108108
*> < 0: if INFO = -i, the i-th argument had an illegal value
109+
*> =-5: if ANORM is NAN or negative.
109110
*> \endverbatim
110111
*
111112
* Authors:
@@ -153,10 +154,10 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
153154
INTEGER ISAVE( 3 )
154155
* ..
155156
* .. External Functions ..
156-
LOGICAL LSAME
157+
LOGICAL LSAME, SISNAN
157158
INTEGER ICAMAX
158159
REAL SLAMCH
159-
EXTERNAL LSAME, ICAMAX, SLAMCH
160+
EXTERNAL LSAME, ICAMAX, SLAMCH, SISNAN
160161
* ..
161162
* .. External Subroutines ..
162163
EXTERNAL CLACN2, CLATRS, CSRSCL, XERBLA
@@ -182,7 +183,7 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
182183
INFO = -2
183184
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
184185
INFO = -4
185-
ELSE IF( ANORM.LT.ZERO ) THEN
186+
ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN
186187
INFO = -5
187188
END IF
188189
IF( INFO.NE.0 ) THEN

SRC/dgecon.f

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
*> INFO is INTEGER
107107
*> = 0: successful exit
108108
*> < 0: if INFO = -i, the i-th argument had an illegal value
109+
*> =-5: if ANORM is NAN or negative.
109110
*> \endverbatim
110111
*
111112
* Authors:
@@ -152,10 +153,10 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
152153
INTEGER ISAVE( 3 )
153154
* ..
154155
* .. External Functions ..
155-
LOGICAL LSAME
156+
LOGICAL LSAME, DISNAN
156157
INTEGER IDAMAX
157158
DOUBLE PRECISION DLAMCH
158-
EXTERNAL LSAME, IDAMAX, DLAMCH
159+
EXTERNAL LSAME, IDAMAX, DLAMCH, DISNAN
159160
* ..
160161
* .. External Subroutines ..
161162
EXTERNAL DLACN2, DLATRS, DRSCL, XERBLA
@@ -175,7 +176,7 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
175176
INFO = -2
176177
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
177178
INFO = -4
178-
ELSE IF( ANORM.LT.ZERO ) THEN
179+
ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN
179180
INFO = -5
180181
END IF
181182
IF( INFO.NE.0 ) THEN

SRC/sgecon.f

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
*> INFO is INTEGER
107107
*> = 0: successful exit
108108
*> < 0: if INFO = -i, the i-th argument had an illegal value
109+
*> =-5: if ANORM is NAN or negative.
109110
*> \endverbatim
110111
*
111112
* Authors:
@@ -152,10 +153,10 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
152153
INTEGER ISAVE( 3 )
153154
* ..
154155
* .. External Functions ..
155-
LOGICAL LSAME
156+
LOGICAL LSAME, SISNAN
156157
INTEGER ISAMAX
157158
REAL SLAMCH
158-
EXTERNAL LSAME, ISAMAX, SLAMCH
159+
EXTERNAL LSAME, ISAMAX, SLAMCH, SISNAN
159160
* ..
160161
* .. External Subroutines ..
161162
EXTERNAL SLACN2, SLATRS, SRSCL, XERBLA
@@ -175,7 +176,7 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
175176
INFO = -2
176177
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
177178
INFO = -4
178-
ELSE IF( ANORM.LT.ZERO ) THEN
179+
ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN
179180
INFO = -5
180181
END IF
181182
IF( INFO.NE.0 ) THEN

SRC/zgecon.f

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
*> INFO is INTEGER
107107
*> = 0: successful exit
108108
*> < 0: if INFO = -i, the i-th argument had an illegal value
109+
*> =-5: if ANORM is NAN or negative.
109110
*> \endverbatim
110111
*
111112
* Authors:
@@ -153,10 +154,10 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
153154
INTEGER ISAVE( 3 )
154155
* ..
155156
* .. External Functions ..
156-
LOGICAL LSAME
157+
LOGICAL LSAME, DISNAN
157158
INTEGER IZAMAX
158159
DOUBLE PRECISION DLAMCH
159-
EXTERNAL LSAME, IZAMAX, DLAMCH
160+
EXTERNAL LSAME, IZAMAX, DLAMCH, DISNAN
160161
* ..
161162
* .. External Subroutines ..
162163
EXTERNAL XERBLA, ZDRSCL, ZLACN2, ZLATRS
@@ -182,7 +183,7 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
182183
INFO = -2
183184
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
184185
INFO = -4
185-
ELSE IF( ANORM.LT.ZERO ) THEN
186+
ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN
186187
INFO = -5
187188
END IF
188189
IF( INFO.NE.0 ) THEN

0 commit comments

Comments
 (0)