Break out of potentially infinite rescaling loop after 1000 iterations

Inf values in the input vector will survive rescaling, causing an infinite loop. The value of 1000 is arbitrarily chosen as a large but finite value with the intention to never interfere with regular calculations.
This commit is contained in:
Martin Kroeker 2017-11-10 20:02:21 +01:00 committed by GitHub
parent c460027dbe
commit 2df1e3372d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 8 additions and 8 deletions

View File

@ -175,7 +175,7 @@
BETA = BETA*RSAFMN
ALPHI = ALPHI*RSAFMN
ALPHR = ALPHR*RSAFMN
IF( ABS( BETA ).LT.SAFMIN )
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000)
$ GO TO 10
*
* New BETA is at most 1, at least SAFMIN

View File

@ -197,7 +197,7 @@
BETA = BETA*BIGNUM
ALPHI = ALPHI*BIGNUM
ALPHR = ALPHR*BIGNUM
IF( ABS( BETA ).LT.SMLNUM )
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000 )
$ GO TO 10
*
* New BETA is at most 1, at least SMLNUM

View File

@ -170,7 +170,7 @@
CALL DSCAL( N-1, RSAFMN, X, INCX )
BETA = BETA*RSAFMN
ALPHA = ALPHA*RSAFMN
IF( ABS( BETA ).LT.SAFMIN )
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000 )
$ GO TO 10
*
* New BETA is at most 1, at least SAFMIN

View File

@ -181,7 +181,7 @@
CALL DSCAL( N-1, BIGNUM, X, INCX )
BETA = BETA*BIGNUM
ALPHA = ALPHA*BIGNUM
IF( ABS( BETA ).LT.SMLNUM )
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000)
$ GO TO 10
*
* New BETA is at most 1, at least SMLNUM

View File

@ -170,7 +170,7 @@
CALL SSCAL( N-1, RSAFMN, X, INCX )
BETA = BETA*RSAFMN
ALPHA = ALPHA*RSAFMN
IF( ABS( BETA ).LT.SAFMIN )
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000)
$ GO TO 10
*
* New BETA is at most 1, at least SAFMIN

View File

@ -181,7 +181,7 @@
CALL SSCAL( N-1, BIGNUM, X, INCX )
BETA = BETA*BIGNUM
ALPHA = ALPHA*BIGNUM
IF( ABS( BETA ).LT.SMLNUM )
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000 )
$ GO TO 10
*
* New BETA is at most 1, at least SMLNUM

View File

@ -175,7 +175,7 @@
BETA = BETA*RSAFMN
ALPHI = ALPHI*RSAFMN
ALPHR = ALPHR*RSAFMN
IF( ABS( BETA ).LT.SAFMIN )
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000)
$ GO TO 10
*
* New BETA is at most 1, at least SAFMIN

View File

@ -197,7 +197,7 @@
BETA = BETA*BIGNUM
ALPHI = ALPHI*BIGNUM
ALPHR = ALPHR*BIGNUM
IF( ABS( BETA ).LT.SMLNUM )
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000)
$ GO TO 10
*
* New BETA is at most 1, at least SMLNUM