OpenLibm/slatec/sdaslv.f
Viral B. Shah c977aa998f Add Makefile.extras to build libopenlibm-extras.
Replace amos with slatec
2012-12-31 16:37:05 -05:00

61 lines
1.9 KiB
Fortran

*DECK SDASLV
SUBROUTINE SDASLV (NEQ, DELTA, WM, IWM)
C***BEGIN PROLOGUE SDASLV
C***SUBSIDIARY
C***PURPOSE Linear system solver for SDASSL.
C***LIBRARY SLATEC (DASSL)
C***TYPE SINGLE PRECISION (SDASLV-S, DDASLV-D)
C***AUTHOR Petzold, Linda R., (LLNL)
C***DESCRIPTION
C-----------------------------------------------------------------------
C THIS ROUTINE MANAGES THE SOLUTION OF THE LINEAR
C SYSTEM ARISING IN THE NEWTON ITERATION.
C MATRICES AND REAL TEMPORARY STORAGE AND
C REAL INFORMATION ARE STORED IN THE ARRAY WM.
C INTEGER MATRIX INFORMATION IS STORED IN
C THE ARRAY IWM.
C FOR A DENSE MATRIX, THE LINPACK ROUTINE
C SGESL IS CALLED.
C FOR A BANDED MATRIX,THE LINPACK ROUTINE
C SGBSL IS CALLED.
C-----------------------------------------------------------------------
C***ROUTINES CALLED SGBSL, SGESL
C***REVISION HISTORY (YYMMDD)
C 830315 DATE WRITTEN
C 901009 Finished conversion to SLATEC 4.0 format (F.N.Fritsch)
C 901019 Merged changes made by C. Ulrich with SLATEC 4.0 format.
C 901026 Added explicit declarations for all variables and minor
C cosmetic changes to prologue. (FNF)
C***END PROLOGUE SDASLV
C
INTEGER NEQ, IWM(*)
REAL DELTA(*), WM(*)
C
EXTERNAL SGBSL, SGESL
C
INTEGER LIPVT, LML, LMU, LMTYPE, MEBAND, MTYPE, NPD
PARAMETER (NPD=1)
PARAMETER (LML=1)
PARAMETER (LMU=2)
PARAMETER (LMTYPE=4)
PARAMETER (LIPVT=21)
C
C***FIRST EXECUTABLE STATEMENT SDASLV
MTYPE=IWM(LMTYPE)
GO TO(100,100,300,400,400),MTYPE
C
C DENSE MATRIX
100 CALL SGESL(WM(NPD),NEQ,NEQ,IWM(LIPVT),DELTA,0)
RETURN
C
C DUMMY SECTION FOR MTYPE=3
300 CONTINUE
RETURN
C
C BANDED MATRIX
400 MEBAND=2*IWM(LML)+IWM(LMU)+1
CALL SGBSL(WM(NPD),MEBAND,NEQ,IWM(LML),
* IWM(LMU),IWM(LIPVT),DELTA,0)
RETURN
C------END OF SUBROUTINE SDASLV------
END