diff options
Diffstat (limited to 'SRC/zlasyf_aa.f')
-rw-r--r-- | SRC/zlasyf_aa.f | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/SRC/zlasyf_aa.f b/SRC/zlasyf_aa.f index dff71042..8e28d4f2 100644 --- a/SRC/zlasyf_aa.f +++ b/SRC/zlasyf_aa.f @@ -315,8 +315,8 @@ * Set A(J, J+1) = T(J, J+1) * A( K, J+1 ) = WORK( 2 ) - IF( (A( K, J ).EQ.ZERO ) .AND. - $ ( (J.EQ.M) .OR. (A( K, J+1 ).EQ.ZERO))) THEN + IF( (A( K, J ).EQ.ZERO ) .AND. (A( K, J+1 ).EQ.ZERO) .AND. + $ ((K.EQ.1) .OR. (A( K-1, J ).EQ.ZERO)) ) THEN IF(INFO .EQ. 0) THEN INFO = J ENDIF @@ -342,8 +342,11 @@ $ A( K, J+2 ), LDA) END IF ELSE - IF( (A( K, J ).EQ.ZERO) .AND. (INFO.EQ.0) ) THEN - INFO = J + IF( (A( K, J ).EQ.ZERO) .AND. + $ ((K.EQ.1) .OR. (A( J-1, J ).EQ.ZERO)) ) THEN + IF (INFO.EQ.0) THEN + INFO = J + END IF END IF END IF J = J + 1 @@ -465,8 +468,8 @@ * Set A(J+1, J) = T(J+1, J) * A( J+1, K ) = WORK( 2 ) - IF( (A( J, K ).EQ.ZERO) .AND. - $ ( (J.EQ.M) .OR. (A( J+1, K ).EQ.ZERO)) ) THEN + IF( (A( J, K ).EQ.ZERO) .AND. (A( J+1, K ).EQ.ZERO) .AND. + $ ((K.EQ.1) .OR. (A( J, K-1 ).EQ.ZERO)) ) THEN IF (INFO .EQ. 0) $ INFO = J END IF @@ -491,8 +494,11 @@ $ A( J+2, K ), LDA ) END IF ELSE - IF( (A( J, K ).EQ.ZERO) .AND. (INFO.EQ.0) ) THEN - INFO = J + IF( (A( J, K ).EQ.ZERO) .AND. + $ ((K.EQ.1) .OR. (A( J, K-1 ).EQ.ZERO)) ) THEN + IF (INFO.EQ.0) THEN + INFO = J + END IF END IF END IF J = J + 1 |