# dgesl.f

          SUBROUTINE DGESL (A, LDA, N, IPVT, B, JOB)
    C***BEGIN PROLOGUE  DGESL
    C***PURPOSE  Solve the real system A*X=B or TRANS(A)*X=B using the
    C            factors computed by DGECO or DGEFA.
    C***LIBRARY   SLATEC (LINPACK)
    C***CATEGORY  D2A1
    C***TYPE      DOUBLE PRECISION (SGESL-S, DGESL-D, CGESL-C)
    C***KEYWORDS  LINEAR ALGEBRA, LINPACK, MATRIX, SOLVE
    C***AUTHOR  Moler, C. B., (U. of New Mexico)
    C***DESCRIPTION
    C
    C     DGESL solves the double precision system
    C     A * X = B  or  TRANS(A) * X = B
    C     using the factors computed by DGECO or DGEFA.
    C
    C     On Entry
    C
    C        A       DOUBLE PRECISION(LDA, N)
    C                the output from DGECO or DGEFA.
    C
    C        LDA     INTEGER
    C                the leading dimension of the array  A .
    C
    C        N       INTEGER
    C                the order of the matrix  A .
    C
    C        IPVT    INTEGER(N)
    C                the pivot vector from DGECO or DGEFA.
    C
    C        B       DOUBLE PRECISION(N)
    C                the right hand side vector.
    C
    C        JOB     INTEGER
    C                = 0         to solve  A*X = B ,
    C                = nonzero   to solve  TRANS(A)*X = B  where
    C                            TRANS(A)  is the transpose.
    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 a
    C        zero on the diagonal.  Technically this indicates singularity
    C        but it is often caused by improper arguments or improper
    C        setting of LDA .  It will not occur if the subroutines are
    C        called correctly and if DGECO has set RCOND .GT. 0.0
    C        or DGEFA has set INFO .EQ. 0 .
    C
    C     To compute  INVERSE(A) * C  where  C  is a matrix
    C     with  P  columns
    C           CALL DGECO(A,LDA,N,IPVT,RCOND,Z)
    C           IF (RCOND is too small) GO TO ...
    C           DO 10 J = 1, P
    C              CALL DGESL(A,LDA,N,IPVT,C(1,J),0)
    C        10 CONTINUE
    C
    C***REFERENCES  J. J. Dongarra, J. R. Bunch, C. B. Moler, and G. W.
    C                 Stewart, LINPACK Users' Guide, SIAM, 1979.
    C***ROUTINES CALLED  DAXPY, DDOT
    C***REVISION HISTORY  (YYMMDD)
    C   780814  DATE WRITTEN
    C   890831  Modified array declarations.  (WRB)
    C   890831  REVISION DATE from Version 3.2
    C   891214  Prologue converted to Version 4.0 format.  (BAB)
    C   900326  Removed duplicate information from DESCRIPTION section.
    C           (WRB)
    C   920501  Reformatted the REFERENCES section.  (WRB)
    C***END PROLOGUE  DGESL