Skip to content

Commit bd35467

Browse files
authored
Merge pull request #1356 from martin-frbg/lapack-issue196
Break out of potentially infinite rescaling loop after 1000 iterations
2 parents 4271b2b + 2df1e33 commit bd35467

File tree

8 files changed

+8
-8
lines changed

8 files changed

+8
-8
lines changed

lapack-netlib/SRC/clarfg.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ SUBROUTINE CLARFG( N, ALPHA, X, INCX, TAU )
175175
BETA = BETA*RSAFMN
176176
ALPHI = ALPHI*RSAFMN
177177
ALPHR = ALPHR*RSAFMN
178-
IF( ABS( BETA ).LT.SAFMIN )
178+
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000)
179179
$ GO TO 10
180180
*
181181
* New BETA is at most 1, at least SAFMIN

lapack-netlib/SRC/clarfgp.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ SUBROUTINE CLARFGP( N, ALPHA, X, INCX, TAU )
197197
BETA = BETA*BIGNUM
198198
ALPHI = ALPHI*BIGNUM
199199
ALPHR = ALPHR*BIGNUM
200-
IF( ABS( BETA ).LT.SMLNUM )
200+
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000 )
201201
$ GO TO 10
202202
*
203203
* New BETA is at most 1, at least SMLNUM

lapack-netlib/SRC/dlarfg.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ SUBROUTINE DLARFG( N, ALPHA, X, INCX, TAU )
170170
CALL DSCAL( N-1, RSAFMN, X, INCX )
171171
BETA = BETA*RSAFMN
172172
ALPHA = ALPHA*RSAFMN
173-
IF( ABS( BETA ).LT.SAFMIN )
173+
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000 )
174174
$ GO TO 10
175175
*
176176
* New BETA is at most 1, at least SAFMIN

lapack-netlib/SRC/dlarfgp.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ SUBROUTINE DLARFGP( N, ALPHA, X, INCX, TAU )
181181
CALL DSCAL( N-1, BIGNUM, X, INCX )
182182
BETA = BETA*BIGNUM
183183
ALPHA = ALPHA*BIGNUM
184-
IF( ABS( BETA ).LT.SMLNUM )
184+
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000)
185185
$ GO TO 10
186186
*
187187
* New BETA is at most 1, at least SMLNUM

lapack-netlib/SRC/slarfg.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ SUBROUTINE SLARFG( N, ALPHA, X, INCX, TAU )
170170
CALL SSCAL( N-1, RSAFMN, X, INCX )
171171
BETA = BETA*RSAFMN
172172
ALPHA = ALPHA*RSAFMN
173-
IF( ABS( BETA ).LT.SAFMIN )
173+
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000)
174174
$ GO TO 10
175175
*
176176
* New BETA is at most 1, at least SAFMIN

lapack-netlib/SRC/slarfgp.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ SUBROUTINE SLARFGP( N, ALPHA, X, INCX, TAU )
181181
CALL SSCAL( N-1, BIGNUM, X, INCX )
182182
BETA = BETA*BIGNUM
183183
ALPHA = ALPHA*BIGNUM
184-
IF( ABS( BETA ).LT.SMLNUM )
184+
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000 )
185185
$ GO TO 10
186186
*
187187
* New BETA is at most 1, at least SMLNUM

lapack-netlib/SRC/zlarfg.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ SUBROUTINE ZLARFG( N, ALPHA, X, INCX, TAU )
175175
BETA = BETA*RSAFMN
176176
ALPHI = ALPHI*RSAFMN
177177
ALPHR = ALPHR*RSAFMN
178-
IF( ABS( BETA ).LT.SAFMIN )
178+
IF( ABS( BETA ).LT.SAFMIN .AND. KNT .LT. 1000)
179179
$ GO TO 10
180180
*
181181
* New BETA is at most 1, at least SAFMIN

lapack-netlib/SRC/zlarfgp.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ SUBROUTINE ZLARFGP( N, ALPHA, X, INCX, TAU )
197197
BETA = BETA*BIGNUM
198198
ALPHI = ALPHI*BIGNUM
199199
ALPHR = ALPHR*BIGNUM
200-
IF( ABS( BETA ).LT.SMLNUM )
200+
IF( ABS( BETA ).LT.SMLNUM .AND. KNT .LT. 1000)
201201
$ GO TO 10
202202
*
203203
* New BETA is at most 1, at least SMLNUM

0 commit comments

Comments
 (0)