Previous: sgbdi Up: ../linpack.html Next: sgbsl


SGBFA

       SUBROUTINE SGBFA(ABD,LDA,N,ML,MU,IPVT,INFO)
       INTEGER LDA,N,ML,MU,IPVT(1),INFO
       REAL ABD(LDA,1)
 C
 C     SGBFA FACTORS A REAL BAND MATRIX BY ELIMINATION.
 C
 C     SGBFA IS USUALLY CALLED BY SGBCO, BUT IT CAN BE CALLED
 C     DIRECTLY WITH A SAVING IN TIME IF  RCOND  IS NOT NEEDED.
 C
 C     ON ENTRY
 C
 C        ABD     REAL(LDA, N)
 C                CONTAINS THE MATRIX IN BAND STORAGE.  THE COLUMNS
 C                OF THE MATRIX ARE STORED IN THE COLUMNS OF  ABD  AND
 C                THE DIAGONALS OF THE MATRIX ARE STORED IN ROWS
 C                ML+1 THROUGH 2*ML+MU+1 OF  ABD .
 C                SEE THE COMMENTS BELOW FOR DETAILS.
 C
 C        LDA     INTEGER
 C                THE LEADING DIMENSION OF THE ARRAY  ABD .
 C                LDA MUST BE .GE. 2*ML + MU + 1 .
 C
 C        N       INTEGER
 C                THE ORDER OF THE ORIGINAL MATRIX.
 C
 C        ML      INTEGER
 C                NUMBER OF DIAGONALS BELOW THE MAIN DIAGONAL.
 C                0 .LE. ML .LT. N .
 C
 C        MU      INTEGER
 C                NUMBER OF DIAGONALS ABOVE THE MAIN DIAGONAL.
 C                0 .LE. MU .LT. N .
 C                MORE EFFICIENT IF  ML .LE. MU .
 C     ON RETURN
 C
 C        ABD     AN UPPER TRIANGULAR MATRIX IN BAND STORAGE AND
 C                THE MULTIPLIERS WHICH WERE USED TO OBTAIN IT.
 C                THE FACTORIZATION CAN BE WRITTEN  A = L*U  WHERE
 C                L  IS A PRODUCT OF PERMUTATION AND UNIT LOWER
 C                TRIANGULAR MATRICES AND  U  IS UPPER TRIANGULAR.
 C
 C        IPVT    INTEGER(N)
 C                AN INTEGER VECTOR OF PIVOT INDICES.
 C
 C        INFO    INTEGER
 C                = 0  NORMAL VALUE.
 C                = K  IF  U(K,K) .EQ. 0.0 .  THIS IS NOT AN ERROR
 C                     CONDITION FOR THIS SUBROUTINE, BUT IT DOES
 C                     INDICATE THAT SGBSL WILL DIVIDE BY ZERO IF
 C                     CALLED.  USE  RCOND  IN SGBCO FOR A RELIABLE
 C                     INDICATION OF SINGULARITY.
 C
 C     BAND STORAGE
 C
 C           IF  A  IS A BAND MATRIX, THE FOLLOWING PROGRAM SEGMENT
 C           WILL SET UP THE INPUT.
 C
 C                   ML = (BAND WIDTH BELOW THE DIAGONAL)
 C                   MU = (BAND WIDTH ABOVE THE DIAGONAL)
 C                   M = ML + MU + 1
 C                   DO 20 J = 1, N
 C                      I1 = MAX0(1, J-MU)
 C                      I2 = MIN0(N, J+ML)
 C                      DO 10 I = I1, I2
 C                         K = I - J + M
 C                         ABD(K,J) = A(I,J)
 C                10    CONTINUE
 C                20 CONTINUE
 C
 C           THIS USES ROWS  ML+1  THROUGH  2*ML+MU+1  OF  ABD .
 C           IN ADDITION, THE FIRST  ML  ROWS IN  ABD  ARE USED FOR
 C           ELEMENTS GENERATED DURING THE TRIANGULARIZATION.
 C           THE TOTAL NUMBER OF ROWS NEEDED IN  ABD  IS  2*ML+MU+1 .
 C           THE  ML+MU BY ML+MU  UPPER LEFT TRIANGLE AND THE
 C           ML BY ML  LOWER RIGHT TRIANGLE ARE NOT REFERENCED.
 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,SSCAL,ISAMAX
 C     FORTRAN MAX0,MIN0
 C