Merge pull request #2648 from martin-frbg/lapack411

Break out of potentially infinite rescaling loop in LAPACK xLARGV/xLARTG/xLARTGP
This commit is contained in:
Martin Kroeker 2020-06-07 19:45:52 +02:00 committed by GitHub
commit 430e8b45fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 8 additions and 8 deletions

View File

@ -200,7 +200,7 @@
FS = FS*SAFMN2 FS = FS*SAFMN2
GS = GS*SAFMN2 GS = GS*SAFMN2
SCALE = SCALE*SAFMN2 SCALE = SCALE*SAFMN2
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 )
$ GO TO 10 $ GO TO 10
ELSE IF( SCALE.LE.SAFMN2 ) THEN ELSE IF( SCALE.LE.SAFMN2 ) THEN
IF( G.EQ.CZERO ) THEN IF( G.EQ.CZERO ) THEN

View File

@ -161,7 +161,7 @@
FS = FS*SAFMN2 FS = FS*SAFMN2
GS = GS*SAFMN2 GS = GS*SAFMN2
SCALE = SCALE*SAFMN2 SCALE = SCALE*SAFMN2
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20)
$ GO TO 10 $ GO TO 10
ELSE IF( SCALE.LE.SAFMN2 ) THEN ELSE IF( SCALE.LE.SAFMN2 ) THEN
IF( G.EQ.CZERO.OR.SISNAN( ABS( G ) ) ) THEN IF( G.EQ.CZERO.OR.SISNAN( ABS( G ) ) ) THEN

View File

@ -163,7 +163,7 @@
F1 = F1*SAFMN2 F1 = F1*SAFMN2
G1 = G1*SAFMN2 G1 = G1*SAFMN2
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) SCALE = MAX( ABS( F1 ), ABS( G1 ) )
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20)
$ GO TO 10 $ GO TO 10
R = SQRT( F1**2+G1**2 ) R = SQRT( F1**2+G1**2 )
CS = F1 / R CS = F1 / R

View File

@ -161,7 +161,7 @@
F1 = F1*SAFMN2 F1 = F1*SAFMN2
G1 = G1*SAFMN2 G1 = G1*SAFMN2
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) SCALE = MAX( ABS( F1 ), ABS( G1 ) )
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 )
$ GO TO 10 $ GO TO 10
R = SQRT( F1**2+G1**2 ) R = SQRT( F1**2+G1**2 )
CS = F1 / R CS = F1 / R

View File

@ -163,7 +163,7 @@
F1 = F1*SAFMN2 F1 = F1*SAFMN2
G1 = G1*SAFMN2 G1 = G1*SAFMN2
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) SCALE = MAX( ABS( F1 ), ABS( G1 ) )
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20)
$ GO TO 10 $ GO TO 10
R = SQRT( F1**2+G1**2 ) R = SQRT( F1**2+G1**2 )
CS = F1 / R CS = F1 / R

View File

@ -161,7 +161,7 @@
F1 = F1*SAFMN2 F1 = F1*SAFMN2
G1 = G1*SAFMN2 G1 = G1*SAFMN2
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) SCALE = MAX( ABS( F1 ), ABS( G1 ) )
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20)
$ GO TO 10 $ GO TO 10
R = SQRT( F1**2+G1**2 ) R = SQRT( F1**2+G1**2 )
CS = F1 / R CS = F1 / R

View File

@ -201,7 +201,7 @@
FS = FS*SAFMN2 FS = FS*SAFMN2
GS = GS*SAFMN2 GS = GS*SAFMN2
SCALE = SCALE*SAFMN2 SCALE = SCALE*SAFMN2
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 )
$ GO TO 10 $ GO TO 10
ELSE IF( SCALE.LE.SAFMN2 ) THEN ELSE IF( SCALE.LE.SAFMN2 ) THEN
IF( G.EQ.CZERO ) THEN IF( G.EQ.CZERO ) THEN

View File

@ -161,7 +161,7 @@
FS = FS*SAFMN2 FS = FS*SAFMN2
GS = GS*SAFMN2 GS = GS*SAFMN2
SCALE = SCALE*SAFMN2 SCALE = SCALE*SAFMN2
IF( SCALE.GE.SAFMX2 ) IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 )
$ GO TO 10 $ GO TO 10
ELSE IF( SCALE.LE.SAFMN2 ) THEN ELSE IF( SCALE.LE.SAFMN2 ) THEN
IF( G.EQ.CZERO.OR.DISNAN( ABS( G ) ) ) THEN IF( G.EQ.CZERO.OR.DISNAN( ABS( G ) ) ) THEN