12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- *DECK SDANRM
- REAL FUNCTION SDANRM (NEQ, V, WT, RPAR, IPAR)
- C***BEGIN PROLOGUE SDANRM
- C***SUBSIDIARY
- C***PURPOSE Compute vector norm for SDASSL.
- C***LIBRARY SLATEC (DASSL)
- C***TYPE SINGLE PRECISION (SDANRM-S, DDANRM-D)
- C***AUTHOR Petzold, Linda R., (LLNL)
- C***DESCRIPTION
- C-----------------------------------------------------------------------
- C THIS FUNCTION ROUTINE COMPUTES THE WEIGHTED
- C ROOT-MEAN-SQUARE NORM OF THE VECTOR OF LENGTH
- C NEQ CONTAINED IN THE ARRAY V,WITH WEIGHTS
- C CONTAINED IN THE ARRAY WT OF LENGTH NEQ.
- C SDANRM=SQRT((1/NEQ)*SUM(V(I)/WT(I))**2)
- C-----------------------------------------------------------------------
- C***ROUTINES CALLED (NONE)
- 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 SDANRM
- C
- INTEGER NEQ, IPAR(*)
- REAL V(NEQ), WT(NEQ), RPAR(*)
- C
- INTEGER I
- REAL SUM, VMAX
- C
- C***FIRST EXECUTABLE STATEMENT SDANRM
- SDANRM = 0.0E0
- VMAX = 0.0E0
- DO 10 I = 1,NEQ
- IF(ABS(V(I)/WT(I)) .GT. VMAX) VMAX = ABS(V(I)/WT(I))
- 10 CONTINUE
- IF(VMAX .LE. 0.0E0) GO TO 30
- SUM = 0.0E0
- DO 20 I = 1,NEQ
- 20 SUM = SUM + ((V(I)/WT(I))/VMAX)**2
- SDANRM = VMAX*SQRT(SUM/NEQ)
- 30 CONTINUE
- RETURN
- C------END OF FUNCTION SDANRM------
- END
|