Break out of potentially infinite rescaling loop in LAPACK xLARGV/xLARTG/xLARTGP
Reference-LAPACK issue 411
This commit is contained in:
parent
0f9a935a5a
commit
522aaf53bf
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue