Skip to content

Commit 5472d5e

Browse files
authored
Merge pull request #502 from weslleyspereira/fix-411-div-by-zero-in-CTGSJA
Fix 411 div by zero in ctgsja
2 parents e02aff9 + 5a7bde2 commit 5472d5e

File tree

4 files changed

+20
-16
lines changed

4 files changed

+20
-16
lines changed

SRC/ctgsja.f

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ SUBROUTINE CTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
398398
* .. Parameters ..
399399
INTEGER MAXIT
400400
PARAMETER ( MAXIT = 40 )
401-
REAL ZERO, ONE
401+
REAL ZERO, ONE, HUGENUM
402402
PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
403403
COMPLEX CZERO, CONE
404404
PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ),
@@ -421,7 +421,8 @@ SUBROUTINE CTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
421421
$ SLARTG, XERBLA
422422
* ..
423423
* .. Intrinsic Functions ..
424-
INTRINSIC ABS, CONJG, MAX, MIN, REAL
424+
INTRINSIC ABS, CONJG, MAX, MIN, REAL, HUGE
425+
PARAMETER ( HUGENUM = HUGE(ZERO) )
425426
* ..
426427
* .. Executable Statements ..
427428
*
@@ -607,9 +608,9 @@ SUBROUTINE CTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
607608
*
608609
A1 = REAL( A( K+I, N-L+I ) )
609610
B1 = REAL( B( I, N-L+I ) )
611+
GAMMA = B1 / A1
610612
*
611-
IF( A1.NE.ZERO ) THEN
612-
GAMMA = B1 / A1
613+
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
613614
*
614615
IF( GAMMA.LT.ZERO ) THEN
615616
CALL CSSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB )

SRC/dtgsja.f

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ SUBROUTINE DTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
397397
* .. Parameters ..
398398
INTEGER MAXIT
399399
PARAMETER ( MAXIT = 40 )
400-
DOUBLE PRECISION ZERO, ONE
400+
DOUBLE PRECISION ZERO, ONE, HUGENUM
401401
PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
402402
* ..
403403
* .. Local Scalars ..
@@ -416,7 +416,8 @@ SUBROUTINE DTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
416416
$ DSCAL, XERBLA
417417
* ..
418418
* .. Intrinsic Functions ..
419-
INTRINSIC ABS, MAX, MIN
419+
INTRINSIC ABS, MAX, MIN, HUGE
420+
PARAMETER ( HUGENUM = HUGE(ZERO) )
420421
* ..
421422
* .. Executable Statements ..
422423
*
@@ -593,9 +594,9 @@ SUBROUTINE DTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
593594
*
594595
A1 = A( K+I, N-L+I )
595596
B1 = B( I, N-L+I )
597+
GAMMA = B1 / A1
596598
*
597-
IF( A1.NE.ZERO ) THEN
598-
GAMMA = B1 / A1
599+
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
599600
*
600601
* change sign if necessary
601602
*

SRC/stgsja.f

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ SUBROUTINE STGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
397397
* .. Parameters ..
398398
INTEGER MAXIT
399399
PARAMETER ( MAXIT = 40 )
400-
REAL ZERO, ONE
400+
REAL ZERO, ONE, HUGENUM
401401
PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
402402
* ..
403403
* .. Local Scalars ..
@@ -416,7 +416,8 @@ SUBROUTINE STGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
416416
$ SSCAL, XERBLA
417417
* ..
418418
* .. Intrinsic Functions ..
419-
INTRINSIC ABS, MAX, MIN
419+
INTRINSIC ABS, MAX, MIN, HUGE
420+
PARAMETER ( HUGENUM = HUGE(ZERO) )
420421
* ..
421422
* .. Executable Statements ..
422423
*
@@ -593,9 +594,9 @@ SUBROUTINE STGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
593594
*
594595
A1 = A( K+I, N-L+I )
595596
B1 = B( I, N-L+I )
597+
GAMMA = B1 / A1
596598
*
597-
IF( A1.NE.ZERO ) THEN
598-
GAMMA = B1 / A1
599+
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
599600
*
600601
* change sign if necessary
601602
*

SRC/ztgsja.f

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ SUBROUTINE ZTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
398398
* .. Parameters ..
399399
INTEGER MAXIT
400400
PARAMETER ( MAXIT = 40 )
401-
DOUBLE PRECISION ZERO, ONE
401+
DOUBLE PRECISION ZERO, ONE, HUGENUM
402402
PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
403403
COMPLEX*16 CZERO, CONE
404404
PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ),
@@ -421,7 +421,8 @@ SUBROUTINE ZTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
421421
$ ZLASET, ZROT
422422
* ..
423423
* .. Intrinsic Functions ..
424-
INTRINSIC ABS, DBLE, DCONJG, MAX, MIN
424+
INTRINSIC ABS, DBLE, DCONJG, MAX, MIN, HUGE
425+
PARAMETER ( HUGENUM = HUGE(ZERO) )
425426
* ..
426427
* .. Executable Statements ..
427428
*
@@ -607,9 +608,9 @@ SUBROUTINE ZTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
607608
*
608609
A1 = DBLE( A( K+I, N-L+I ) )
609610
B1 = DBLE( B( I, N-L+I ) )
611+
GAMMA = B1 / A1
610612
*
611-
IF( A1.NE.ZERO ) THEN
612-
GAMMA = B1 / A1
613+
IF( (GAMMA.LE.HUGENUM).AND.(GAMMA.GE.-HUGENUM) ) THEN
613614
*
614615
IF( GAMMA.LT.ZERO ) THEN
615616
CALL ZDSCAL( L-I+1, -ONE, B( I, N-L+I ), LDB )

0 commit comments

Comments
 (0)