Fix possible division by zero in LAPACK xTGSJA (Reference-LAPACK PR502)tags/v0.3.15
| @@ -401,7 +401,7 @@ | |||||
| * .. Parameters .. | * .. Parameters .. | ||||
| INTEGER MAXIT | INTEGER MAXIT | ||||
| PARAMETER ( MAXIT = 40 ) | PARAMETER ( MAXIT = 40 ) | ||||
| REAL ZERO, ONE | |||||
| REAL ZERO, ONE, HUGENUM | |||||
| PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 ) | PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 ) | ||||
| COMPLEX CZERO, CONE | COMPLEX CZERO, CONE | ||||
| PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ), | PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ), | ||||
| @@ -424,7 +424,8 @@ | |||||
| $ SLARTG, XERBLA | $ SLARTG, XERBLA | ||||
| * .. | * .. | ||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC ABS, CONJG, MAX, MIN, REAL | |||||
| INTRINSIC ABS, CONJG, MAX, MIN, REAL, HUGE | |||||
| PARAMETER ( HUGENUM = HUGE(ZERO) ) | |||||
| * .. | * .. | ||||
| * .. Executable Statements .. | * .. Executable Statements .. | ||||
| * | * | ||||
| @@ -610,9 +611,9 @@ | |||||
| * | * | ||||
| A1 = REAL( A( K+I, N-L+I ) ) | A1 = REAL( A( K+I, N-L+I ) ) | ||||
| B1 = REAL( B( 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 | IF( GAMMA.LT.ZERO ) THEN | ||||
| CALL CSSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB ) | CALL CSSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB ) | ||||
| @@ -400,7 +400,7 @@ | |||||
| * .. Parameters .. | * .. Parameters .. | ||||
| INTEGER MAXIT | INTEGER MAXIT | ||||
| PARAMETER ( MAXIT = 40 ) | PARAMETER ( MAXIT = 40 ) | ||||
| DOUBLE PRECISION ZERO, ONE | |||||
| DOUBLE PRECISION ZERO, ONE, HUGENUM | |||||
| PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) | PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) | ||||
| * .. | * .. | ||||
| * .. Local Scalars .. | * .. Local Scalars .. | ||||
| @@ -419,7 +419,8 @@ | |||||
| $ DSCAL, XERBLA | $ DSCAL, XERBLA | ||||
| * .. | * .. | ||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC ABS, MAX, MIN | |||||
| INTRINSIC ABS, MAX, MIN, HUGE | |||||
| PARAMETER ( HUGENUM = HUGE(ZERO) ) | |||||
| * .. | * .. | ||||
| * .. Executable Statements .. | * .. Executable Statements .. | ||||
| * | * | ||||
| @@ -596,9 +597,9 @@ | |||||
| * | * | ||||
| A1 = A( K+I, N-L+I ) | A1 = A( K+I, N-L+I ) | ||||
| B1 = B( 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 | * change sign if necessary | ||||
| * | * | ||||
| @@ -400,7 +400,7 @@ | |||||
| * .. Parameters .. | * .. Parameters .. | ||||
| INTEGER MAXIT | INTEGER MAXIT | ||||
| PARAMETER ( MAXIT = 40 ) | PARAMETER ( MAXIT = 40 ) | ||||
| REAL ZERO, ONE | |||||
| REAL ZERO, ONE, HUGENUM | |||||
| PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 ) | PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 ) | ||||
| * .. | * .. | ||||
| * .. Local Scalars .. | * .. Local Scalars .. | ||||
| @@ -419,7 +419,8 @@ | |||||
| $ SSCAL, XERBLA | $ SSCAL, XERBLA | ||||
| * .. | * .. | ||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC ABS, MAX, MIN | |||||
| INTRINSIC ABS, MAX, MIN, HUGE | |||||
| PARAMETER ( HUGENUM = HUGE(ZERO) ) | |||||
| * .. | * .. | ||||
| * .. Executable Statements .. | * .. Executable Statements .. | ||||
| * | * | ||||
| @@ -596,9 +597,9 @@ | |||||
| * | * | ||||
| A1 = A( K+I, N-L+I ) | A1 = A( K+I, N-L+I ) | ||||
| B1 = B( 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 | * change sign if necessary | ||||
| * | * | ||||
| @@ -401,7 +401,7 @@ | |||||
| * .. Parameters .. | * .. Parameters .. | ||||
| INTEGER MAXIT | INTEGER MAXIT | ||||
| PARAMETER ( MAXIT = 40 ) | PARAMETER ( MAXIT = 40 ) | ||||
| DOUBLE PRECISION ZERO, ONE | |||||
| DOUBLE PRECISION ZERO, ONE, HUGENUM | |||||
| PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) | PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 ) | ||||
| COMPLEX*16 CZERO, CONE | COMPLEX*16 CZERO, CONE | ||||
| PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ), | PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ), | ||||
| @@ -424,7 +424,8 @@ | |||||
| $ ZLASET, ZROT | $ ZLASET, ZROT | ||||
| * .. | * .. | ||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC ABS, DBLE, DCONJG, MAX, MIN | |||||
| INTRINSIC ABS, DBLE, DCONJG, MAX, MIN, HUGE | |||||
| PARAMETER ( HUGENUM = HUGE(ZERO) ) | |||||
| * .. | * .. | ||||
| * .. Executable Statements .. | * .. Executable Statements .. | ||||
| * | * | ||||
| @@ -610,9 +611,9 @@ | |||||
| * | * | ||||
| A1 = DBLE( A( K+I, N-L+I ) ) | A1 = DBLE( A( K+I, N-L+I ) ) | ||||
| B1 = DBLE( B( 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 | IF( GAMMA.LT.ZERO ) THEN | ||||
| CALL ZDSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB ) | CALL ZDSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB ) | ||||