home *** CD-ROM | disk | FTP | other *** search
- SUBROUTINE SPBSL(ABD,LDA,N,M,B)
- INTEGER LDA,N,M
- REAL ABD(LDA,1),B(1)
- C
- C SPBSL SOLVES THE REAL SYMMETRIC POSITIVE DEFINITE
- C BAND SYSTEM A*X = B
- C USING THE FACTORS COMPUTED BY SPBCO OR SPBFA.
- C
- C ON ENTRY
- C
- C ABD REAL(LDA, N)
- C THE OUTPUT FROM SPBCO OR SPBFA.
- C
- C LDA INTEGER
- C THE LEADING DIMENSION OF THE ARRAY ABD .
- C
- C N INTEGER
- C THE ORDER OF THE MATRIX A .
- C
- C M INTEGER
- C THE NUMBER OF DIAGONALS ABOVE THE MAIN DIAGONAL.
- C
- C B REAL(N)
- C THE RIGHT HAND SIDE VECTOR.
- C
- C ON RETURN
- C
- C B THE SOLUTION VECTOR X .
- C
- C ERROR CONDITION
- C
- C A DIVISION BY ZERO WILL OCCUR IF THE INPUT FACTOR CONTAINS
- C A ZERO ON THE DIAGONAL. TECHNICALLY THIS INDICATES
- C SINGULARITY BUT IT IS USUALLY CAUSED BY IMPROPER SUBROUTINE
- C ARGUMENTS. IT WILL NOT OCCUR IF THE SUBROUTINES ARE CALLED
- C CORRECTLY AND INFO .EQ. 0 .
- C
- C TO COMPUTE INVERSE(A) * C WHERE C IS A MATRIX
- C WITH P COLUMNS
- C CALL SPBCO(ABD,LDA,N,RCOND,Z,INFO)
- C IF (RCOND IS TOO SMALL .OR. INFO .NE. 0) GO TO ...
- C DO 10 J = 1, P
- C CALL SPBSL(ABD,LDA,N,C(1,J))
- C 10 CONTINUE
- C
- C LINPACK. THIS VERSION DATED 08/14/78 .
- C CLEVE MOLER, UNIVERSITY OF NEW MEXICO, ARGONNE NATIONAL LAB.
- C
- C SUBROUTINES AND FUNCTIONS
- C
- C BLAS SAXPY,SDOT
- C FORTRAN MIN0
- C
- C INTERNAL VARIABLES
- C
- REAL SDOT,T
- INTEGER K,KB,LA,LB,LM
- C
- C SOLVE TRANS(R)*Y = B
- C
- DO 10 K = 1, N
- LM = MIN0(K-1,M)
- LA = M + 1 - LM
- LB = K - LM
- T = SDOT(LM,ABD(LA,K),1,B(LB),1)
- B(K) = (B(K) - T)/ABD(M+1,K)
- 10 CONTINUE
- C
- C SOLVE R*X = Y
- C
- DO 20 KB = 1, N
- K = N + 1 - KB
- LM = MIN0(K-1,M)
- LA = M + 1 - LM
- LB = K - LM
- B(K) = B(K)/ABD(M+1,K)
- T = -B(K)
- CALL SAXPY(LM,T,ABD(LA,K),1,B(LB),1)
- 20 CONTINUE
- RETURN
- END