### PDA_DGEFS

Solve the problem A * x = b. A is a square matrix, x and b are vectors. Factoring of A can be re-used to solve for multi-column X and B.

SLATEC / CAMSUN

#### Implementation Status:

The routine and its subsidiaries will now return an error status as supplied by PDA_XERMSG.
SUBROUTINE PDA_DGEFS (A, LDA, N, V, ITASK, IND, WORK, IWORK, STATUS)

***BEGIN PROLOGUE  PDA_DGEFS
***PURPOSE  Solve a general system of linear equations.
***LIBRARY   SLATEC
***CATEGORY  D2A1
***TYPE      DOUBLE PRECISION (SGEFS-S, PDA_DGEFS-D, CGEFS-C)
***KEYWORDS  COMPLEX LINEAR EQUATIONS, GENERAL MATRIX,
GENERAL SYSTEM OF LINEAR EQUATIONS
***AUTHOR  Voorhees, E. A., (LANL)
***DESCRIPTION

Subroutine PDA_DGEFS solves a general NxN system of double
precision linear equations using LINPACK subroutines PDA_DGECO
and PDA_DGESL.  That is, if A is an NxN double precision matrix
and if X and B are double precision N-vectors, then PDA_DGEFS
solves the equation

A*X=B.

The matrix A is first factored into upper and lower tri-
angular matrices U and L using partial pivoting.  These
factors and the pivoting information are used to find the
solution vector X.  An approximate condition number is
calculated to provide a rough estimate of the number of
digits of accuracy in the computed solution.

If the equation A*X=B is to be solved for more than one vector
B, the factoring of A does not need to be performed again and
the option to only solve (ITASK.GT.1) will be faster for
the succeeding solutions.  In this case, the contents of A,
LDA, N and IWORK must not have been altered by the user follow-
ing factorization (ITASK=1).  IND will not be changed by PDA_DGEFS
in this case.

Argument Description ***

A      DOUBLE PRECISION(LDA,N)
on entry, the doubly subscripted array with dimension
(LDA,N) which contains the coefficient matrix.
on return, an upper triangular matrix U and the
multipliers necessary to construct a matrix L
so that A=L*U.
LDA    INTEGER
the leading dimension of the array A.  LDA must be great-
er than or equal to N.  (terminal error message IND=-1)
N      INTEGER
the order of the matrix A.  The first N elements of
the array A are the elements of the first column of
the matrix A.  N must be greater than or equal to 1.
(terminal error message IND=-2)
V      DOUBLE PRECISION(N)
on entry, the singly subscripted array(vector) of di-
mension N which contains the right hand side B of a
system of simultaneous linear equations A*X=B.
on return, V contains the solution vector, X .
If ITASK=1, the matrix A is factored and then the
linear equation is solved.
If ITASK .GT. 1, the equation is solved using the existing
factored matrix A and IWORK.
If ITASK .LT. 1, then terminal error message IND=-3 is
printed.
IND    INTEGER
GT. 0  IND is a rough estimate of the number of digits
of accuracy in the solution, X.
LT. 0  see error message corresponding to IND below.
WORK   DOUBLE PRECISION(N)
a singly subscripted array of dimension at least N.
IWORK  INTEGER(N)
a singly subscripted array of dimension at least N.
STATUS INTEGER
Returned error status.
The status must be zero on entry. This
routine does not check the status on entry.

Error Messages Printed ***

IND=-1  terminal   N is greater than LDA.
IND=-2  terminal   N is less than 1.
IND=-3  terminal   ITASK is less than 1.
IND=-4  terminal   The matrix A is computationally singular.
A solution has not been computed.
IND=-10 warning    The solution has no apparent significance.
The solution may be inaccurate or the matrix
A may be poorly scaled.

Note-  The above terminal(*fatal*) error messages are
designed to be handled by PDA_XERMSG in which
LEVEL=1 (recoverable) and IFLAG=2 .  LEVEL=0
for warning error messages from PDA_XERMSG.  Unless
the user provides otherwise, an error message
will be printed followed by an abort.

***REFERENCES  J. J. Dongarra, J. R. Bunch, C. B. Moler, and G. W.
Stewart, LINPACK Users’ Guide, SIAM, 1979.
***ROUTINES CALLED  PDA_D1MACH, PDA_DGECO, PDA_DGESL, PDA_XERMSG
***REVISION HISTORY  (YYMMDD)
800326  DATE WRITTEN
890531  Changed all specific intrinsics to generic.  (WRB)
890831  Modified array declarations.  (WRB)
890831  REVISION DATE from Version 3.2
891214  Prologue converted to Version 4.0 format.  (BAB)
900315  CALLs to XERROR changed to CALLs to PDA_XERMSG.  (THJ)
900510  Convert XERRWV calls to PDA_XERMSG calls.  (RWC)
920501  Reformatted the REFERENCES section.  (WRB)
950404  Implement status.  (HME)
***END PROLOGUE  PDA_DGEFS