@@ -409,12 +409,13 @@ SUBROUTINE CTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
409409 LOGICAL INITQ, INITU, INITV, UPPER, WANTQ, WANTU, WANTV
410410 INTEGER I, J, KCYCLE
411411 REAL A1, A3, B1, B3, CSQ, CSU, CSV, ERROR, GAMMA,
412- $ RWK, SSMIN
412+ $ RWK, SSMIN, SFMIN
413413 COMPLEX A2, B2, SNQ, SNU, SNV
414414* ..
415415* .. External Functions ..
416416 LOGICAL LSAME
417- EXTERNAL LSAME
417+ REAL SLAMCH
418+ EXTERNAL LSAME, SLAMCH
418419* ..
419420* .. External Subroutines ..
420421 EXTERNAL CCOPY, CLAGS2, CLAPLL, CLASET, CROT, CSSCAL,
@@ -465,6 +466,10 @@ SUBROUTINE CTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
465466 RETURN
466467 END IF
467468*
469+ * Safe minimum
470+ *
471+ SFMIN = SLAMCH( ' Safe minimum' )
472+ *
468473* Initialize U, V and Q, if necessary
469474*
470475 IF ( INITU )
@@ -608,7 +613,7 @@ SUBROUTINE CTGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B,
608613 A1 = REAL ( A( K+ I, N- L+ I ) )
609614 B1 = REAL ( B( I, N- L+ I ) )
610615*
611- IF ( A1 .NE. ZERO ) THEN
616+ IF ( ABS (A1) .GE. SFMIN ) THEN
612617 GAMMA = B1 / A1
613618*
614619 IF ( GAMMA.LT. ZERO ) THEN
0 commit comments