C FIGURE 0.4.3 SUBROUTINE LBAND0(A,X,B,N,L) IMPLICIT DOUBLE PRECISION(A-H,O-Z) C C ARGUMENT DESCRIPTIONS C C A - (INPUT) A IS AN N BY 2*L+1 ARRAY CONTAINING THE BAND MATRIX C IN BAND STORAGE MODE. A(I,J-I) CONTAINS THE ELEMENT IN C ROW I, COLUMN J OF THE BAND MATRIX. C (OUTPUT) A IS DESTROYED. C X - (OUTPUT) X IS THE SOLUTION VECTOR OF LENGTH N. C B - (INPUT) B IS THE RIGHT HAND SIDE VECTOR OF LENGTH N. C N - (INPUT) N IS THE NUMBER OF EQUATIONS AND NUMBER OF UNKNOWNS C IN THE LINEAR SYSTEM. C L - (INPUT) L IS THE HALF-BANDWIDTH, DEFINED AS THE MAXIMUM VALUE C OF ABS(I-J) SUCH THAT AIJ IS NONZERO. C DIMENSION A(N,-L:L),X(N),B(N),B_(N) C COPY B TO B_, SO B WILL NOT BE DESTROYED DO 10 I=1,N B_(I) = B(I) 10 CONTINUE C BEGIN FORWARD ELIMINATION DO 40 K=1,N-1 IF (A(K,0).EQ.0.0) GO TO 70 DO 30 I=K+1,MIN(K+L,N) AMUL = -A(I,K-I)/A(K,0) IF (AMUL.EQ.0.0) GO TO 30 C ADD AMUL TIMES ROW K TO ROW I DO 20 J=K,MIN(K+L,N) A(I,J-I) = A(I,J-I) + AMUL*A(K,J-K) 20 CONTINUE B_(I) = B_(I) + AMUL*B_(K) 30 CONTINUE 40 CONTINUE IF (A(N,0).EQ.0.0) GO TO 70 C BEGIN BACK SUBSTITUTION X(N) = B_(N)/A(N,0) DO 60 K=N-1,1,-1 SUM = 0 DO 50 J=K+1,MIN(K+L,N) SUM = SUM + A(K,J-K)*X(J) 50 CONTINUE X(K) = (B_(K)-SUM)/A(K,0) 60 CONTINUE RETURN C ZERO PIVOT ENCOUNTERED 70 PRINT 80 80 FORMAT (' ZERO PIVOT ENCOUNTERED') RETURN END