Browse Source
Merge pull request #2648 from martin-frbg/lapack411
Break out of potentially infinite rescaling loop in LAPACK xLARGV/xLARTG/xLARTGP
tags/v0.3.10^2
Martin Kroeker
GitHub
5 years ago
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with
8 additions and
8 deletions
-
lapack-netlib/SRC/clargv.f
-
lapack-netlib/SRC/clartg.f
-
lapack-netlib/SRC/dlartg.f
-
lapack-netlib/SRC/dlartgp.f
-
lapack-netlib/SRC/slartg.f
-
lapack-netlib/SRC/slartgp.f
-
lapack-netlib/SRC/zlargv.f
-
lapack-netlib/SRC/zlartg.f
|
|
|
@@ -200,7 +200,7 @@ |
|
|
|
FS = FS*SAFMN2 |
|
|
|
GS = GS*SAFMN2 |
|
|
|
SCALE = SCALE*SAFMN2 |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 ) |
|
|
|
$ GO TO 10 |
|
|
|
ELSE IF( SCALE.LE.SAFMN2 ) THEN |
|
|
|
IF( G.EQ.CZERO ) THEN |
|
|
|
|
|
|
|
@@ -161,7 +161,7 @@ |
|
|
|
FS = FS*SAFMN2 |
|
|
|
GS = GS*SAFMN2 |
|
|
|
SCALE = SCALE*SAFMN2 |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20) |
|
|
|
$ GO TO 10 |
|
|
|
ELSE IF( SCALE.LE.SAFMN2 ) THEN |
|
|
|
IF( G.EQ.CZERO.OR.SISNAN( ABS( G ) ) ) THEN |
|
|
|
|
|
|
|
@@ -163,7 +163,7 @@ |
|
|
|
F1 = F1*SAFMN2 |
|
|
|
G1 = G1*SAFMN2 |
|
|
|
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20) |
|
|
|
$ GO TO 10 |
|
|
|
R = SQRT( F1**2+G1**2 ) |
|
|
|
CS = F1 / R |
|
|
|
|
|
|
|
@@ -161,7 +161,7 @@ |
|
|
|
F1 = F1*SAFMN2 |
|
|
|
G1 = G1*SAFMN2 |
|
|
|
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 ) |
|
|
|
$ GO TO 10 |
|
|
|
R = SQRT( F1**2+G1**2 ) |
|
|
|
CS = F1 / R |
|
|
|
|
|
|
|
@@ -163,7 +163,7 @@ |
|
|
|
F1 = F1*SAFMN2 |
|
|
|
G1 = G1*SAFMN2 |
|
|
|
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20) |
|
|
|
$ GO TO 10 |
|
|
|
R = SQRT( F1**2+G1**2 ) |
|
|
|
CS = F1 / R |
|
|
|
|
|
|
|
@@ -161,7 +161,7 @@ |
|
|
|
F1 = F1*SAFMN2 |
|
|
|
G1 = G1*SAFMN2 |
|
|
|
SCALE = MAX( ABS( F1 ), ABS( G1 ) ) |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20) |
|
|
|
$ GO TO 10 |
|
|
|
R = SQRT( F1**2+G1**2 ) |
|
|
|
CS = F1 / R |
|
|
|
|
|
|
|
@@ -201,7 +201,7 @@ |
|
|
|
FS = FS*SAFMN2 |
|
|
|
GS = GS*SAFMN2 |
|
|
|
SCALE = SCALE*SAFMN2 |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 ) |
|
|
|
$ GO TO 10 |
|
|
|
ELSE IF( SCALE.LE.SAFMN2 ) THEN |
|
|
|
IF( G.EQ.CZERO ) THEN |
|
|
|
|
|
|
|
@@ -161,7 +161,7 @@ |
|
|
|
FS = FS*SAFMN2 |
|
|
|
GS = GS*SAFMN2 |
|
|
|
SCALE = SCALE*SAFMN2 |
|
|
|
IF( SCALE.GE.SAFMX2 ) |
|
|
|
IF( SCALE.GE.SAFMX2 .AND. COUNT .LT. 20 ) |
|
|
|
$ GO TO 10 |
|
|
|
ELSE IF( SCALE.LE.SAFMN2 ) THEN |
|
|
|
IF( G.EQ.CZERO.OR.DISNAN( ABS( G ) ) ) THEN |
|
|
|
|