123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- *DECK WNLT1
- SUBROUTINE WNLT1 (I, LEND, MEND, IR, MDW, RECALC, IMAX, HBAR, H,
- + SCALE, W)
- C***BEGIN PROLOGUE WNLT1
- C***SUBSIDIARY
- C***PURPOSE Subsidiary to WNLIT
- C***LIBRARY SLATEC
- C***TYPE SINGLE PRECISION (WNLT1-S, DWNLT1-D)
- C***AUTHOR Hanson, R. J., (SNLA)
- C Haskell, K. H., (SNLA)
- C***DESCRIPTION
- C
- C To update the column Sum Of Squares and find the pivot column.
- C The column Sum of Squares Vector will be updated at each step.
- C When numerically necessary, these values will be recomputed.
- C
- C***SEE ALSO WNLIT
- C***ROUTINES CALLED ISAMAX
- C***REVISION HISTORY (YYMMDD)
- C 790701 DATE WRITTEN
- C 890620 Code extracted from WNLIT and made a subroutine. (RWC))
- C***END PROLOGUE WNLT1
- INTEGER I, IMAX, IR, LEND, MDW, MEND
- REAL H(*), HBAR, SCALE(*), W(MDW,*)
- LOGICAL RECALC
- C
- EXTERNAL ISAMAX
- INTEGER ISAMAX
- C
- INTEGER J, K
- C
- C***FIRST EXECUTABLE STATEMENT WNLT1
- IF (IR.NE.1 .AND. (.NOT.RECALC)) THEN
- C
- C Update column SS=sum of squares.
- C
- DO 10 J=I,LEND
- H(J) = H(J) - SCALE(IR-1)*W(IR-1,J)**2
- 10 CONTINUE
- C
- C Test for numerical accuracy.
- C
- IMAX = ISAMAX(LEND-I+1, H(I), 1) + I - 1
- RECALC = (HBAR+1.E-3*H(IMAX)) .EQ. HBAR
- ENDIF
- C
- C If required, recalculate column SS, using rows IR through MEND.
- C
- IF (RECALC) THEN
- DO 30 J=I,LEND
- H(J) = 0.E0
- DO 20 K=IR,MEND
- H(J) = H(J) + SCALE(K)*W(K,J)**2
- 20 CONTINUE
- 30 CONTINUE
- C
- C Find column with largest SS.
- C
- IMAX = ISAMAX(LEND-I+1, H(I), 1) + I - 1
- HBAR = H(IMAX)
- ENDIF
- RETURN
- END
|