Merge pull request #3210 from martin-frbg/lapack502

Fix possible division by zero in LAPACK xTGSJA (Reference-LAPACK PR502)
This commit is contained in:
Martin Kroeker 2021-05-02 09:02:11 +02:00 committed by GitHub
commit 37d3e2bd94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 16 deletions

View File

@ -401,7 +401,7 @@
* .. Parameters ..
INTEGER MAXIT
PARAMETER ( MAXIT = 40 )
REAL ZERO, ONE
REAL ZERO, ONE, HUGENUM
PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
COMPLEX CZERO, CONE
PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ),
@ -424,7 +424,8 @@
$ SLARTG, XERBLA
* ..
* .. Intrinsic Functions ..
INTRINSIC ABS, CONJG, MAX, MIN, REAL
INTRINSIC ABS, CONJG, MAX, MIN, REAL, HUGE
PARAMETER ( HUGENUM = HUGE(ZERO) )
* ..
* .. Executable Statements ..
*
@ -610,9 +611,9 @@
*
A1 = REAL( A( K+I, N-L+I ) )
B1 = REAL( B( I, N-L+I ) )
GAMMA = B1 / A1
*
IF( A1.NE.ZERO ) THEN
GAMMA = B1 / A1
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
*
IF( GAMMA.LT.ZERO ) THEN
CALL CSSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB )

View File

@ -400,7 +400,7 @@
* .. Parameters ..
INTEGER MAXIT
PARAMETER ( MAXIT = 40 )
DOUBLE PRECISION ZERO, ONE
DOUBLE PRECISION ZERO, ONE, HUGENUM
PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
* ..
* .. Local Scalars ..
@ -419,7 +419,8 @@
$ DSCAL, XERBLA
* ..
* .. Intrinsic Functions ..
INTRINSIC ABS, MAX, MIN
INTRINSIC ABS, MAX, MIN, HUGE
PARAMETER ( HUGENUM = HUGE(ZERO) )
* ..
* .. Executable Statements ..
*
@ -596,9 +597,9 @@
*
A1 = A( K+I, N-L+I )
B1 = B( I, N-L+I )
GAMMA = B1 / A1
*
IF( A1.NE.ZERO ) THEN
GAMMA = B1 / A1
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
*
* change sign if necessary
*

View File

@ -400,7 +400,7 @@
* .. Parameters ..
INTEGER MAXIT
PARAMETER ( MAXIT = 40 )
REAL ZERO, ONE
REAL ZERO, ONE, HUGENUM
PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
* ..
* .. Local Scalars ..
@ -419,7 +419,8 @@
$ SSCAL, XERBLA
* ..
* .. Intrinsic Functions ..
INTRINSIC ABS, MAX, MIN
INTRINSIC ABS, MAX, MIN, HUGE
PARAMETER ( HUGENUM = HUGE(ZERO) )
* ..
* .. Executable Statements ..
*
@ -596,9 +597,9 @@
*
A1 = A( K+I, N-L+I )
B1 = B( I, N-L+I )
GAMMA = B1 / A1
*
IF( A1.NE.ZERO ) THEN
GAMMA = B1 / A1
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
*
* change sign if necessary
*

View File

@ -401,7 +401,7 @@
* .. Parameters ..
INTEGER MAXIT
PARAMETER ( MAXIT = 40 )
DOUBLE PRECISION ZERO, ONE
DOUBLE PRECISION ZERO, ONE, HUGENUM
PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
COMPLEX*16 CZERO, CONE
PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ),
@ -424,7 +424,8 @@
$ ZLASET, ZROT
* ..
* .. Intrinsic Functions ..
INTRINSIC ABS, DBLE, DCONJG, MAX, MIN
INTRINSIC ABS, DBLE, DCONJG, MAX, MIN, HUGE
PARAMETER ( HUGENUM = HUGE(ZERO) )
* ..
* .. Executable Statements ..
*
@ -610,9 +611,9 @@
*
A1 = DBLE( A( K+I, N-L+I ) )
B1 = DBLE( B( I, N-L+I ) )
GAMMA = B1 / A1
*
IF( A1.NE.ZERO ) THEN
GAMMA = B1 / A1
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
*
IF( GAMMA.LT.ZERO ) THEN
CALL ZDSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB )