SUBROUTINE SGEFS(A,LDA,N,V,ITASK,IND,WORK,IWORK,RCOND) C***BEGIN PROLOGUE SGEFS C***DATE WRITTEN 800317 (YYMMDD) C***REVISION DATE 870916 (YYMMDD) C***CATEGORY NO. D2A1 C***KEYWORDS GENERAL SYSTEM OF LINEAR EQUATIONS,LINEAR EQUATIONS C***AUTHOR VOORHEES, E., (LOS ALAMOS NATIONAL LABORATORY) C***PURPOSE SGEFS solves a GENERAL single precision real C NXN system of linear equations. C***DESCRIPTION C C From the book "Numerical Methods and Software" C by D. Kahaner, C. Moler, S. Nash C Prentice Hall 1988 C C Subroutine SGEFS solves a general NxN system of single C precision linear equations using LINPACK subroutines SGECO C and SGESL. That is, if A is an NxN real matrix and if X C and B are real N-vectors, then SGEFS solves the equation C C A*X=B. C C The matrix A is first factored into upper and lower tri- C angular matrices U and L using partial pivoting. These C factors and the pivoting information are used to find the C solution vector X. An approximate condition number is C calculated to provide a rough estimate of the number of C digits of accuracy in the computed solution. C C If the equation A*X=B is to be solved for more than one vector C B, the factoring of A does not need to be performed again and C the option to only solve (ITASK .EQ. 2) will be faster for C the succeeding solutions. In this case, the contents of A, C LDA, N and IWORK must not have been altered by the user follow- C ing factorization (ITASK=1). IND will not be changed by SGEFS C in this case. Other settings of ITASK are used to solve linear C systems involving the transpose of A. C C Argument Description *** C C A REAL(LDA,N) C on entry, the doubly subscripted array with dimension C (LDA,N) which contains the coefficient matrix. C on return, an upper triangular matrix U and the C multipliers necessary to construct a matrix L C so that A=L*U. C LDA INTEGER C the leading dimension of the array A. LDA must be great- C er than or equal to N. (terminal error message IND=-1) C N INTEGER C the order of the matrix A. The first N elements of C the array A are the elements of the first column of C the matrix A. N must be greater than or equal to 1. C (terminal error message IND=-2) C V REAL(N) C on entry, the singly subscripted array(vector) of di- C mension N which contains the right hand side B of a C system of simultaneous linear equations A*X=B. C on return, V contains the solution vector, X . C ITASK INTEGER C If ITASK=1, the matrix A is factored and then the C linear equation is solved. C If ITASK=2, the equation is solved using the existing C factored matrix A and IWORK. C If ITASK=3, the matrix is factored and A'x=b is solved C If ITASK=4, the transposed equation is solved using the C existing factored matrix A and IWORK. C If ITASK .LT. 1 or ITASK .GT. 4, then the terminal error C message IND=-3 is printed. C IND INTEGER C GT. 0 IND is a rough estimate of the number of digits C of accuracy in the solution, X. C LT. 0 see error message corresponding to IND below. C WORK REAL(N) C a singly subscripted array of dimension at least N. C IWORK INTEGER(N) C a singly subscripted array of dimension at least N. C RCOND REAL C estimate of 1.0/cond(A) C C Error Messages Printed *** C C IND=-1 fatal N is greater than LDA. C IND=-2 fatal N is less than 1. C IND=-3 fatal ITASK is less than 1 or greater than 4. C IND=-4 fatal The matrix A is computationally singular. C A solution has not been computed. C IND=-10 warning The solution has no apparent significance. C The solution may be inaccurate or the matrix C A may be poorly scaled. C C***REFERENCES SUBROUTINE SGEFS WAS DEVELOPED BY GROUP C-3, LOS ALAMOS C SCIENTIFIC LABORATORY, LOS ALAMOS, NM 87545. C THE LINPACK SUBROUTINES USED BY SGEFS ARE DESCRIBED IN C DETAIL IN THE *LINPACK USERS GUIDE* PUBLISHED BY C THE SOCIETY FOR INDUSTRIAL AND APPLIED MATHEMATICS C (SIAM) DATED 1979. C***ROUTINES CALLED R1MACH,SGECO,SGESL,XERROR