2329
|
1 DOUBLE PRECISION FUNCTION DDANRM (NEQ, V, WT, RPAR, IPAR) |
|
2 C***BEGIN PROLOGUE DDANRM |
|
3 C***SUBSIDIARY |
|
4 C***PURPOSE Compute vector norm for DDASSL. |
|
5 C***LIBRARY SLATEC (DASSL) |
|
6 C***TYPE DOUBLE PRECISION (SDANRM-S, DDANRM-D) |
|
7 C***AUTHOR PETZOLD, LINDA R., (LLNL) |
|
8 C***DESCRIPTION |
|
9 C----------------------------------------------------------------------- |
|
10 C THIS FUNCTION ROUTINE COMPUTES THE WEIGHTED |
|
11 C ROOT-MEAN-SQUARE NORM OF THE VECTOR OF LENGTH |
|
12 C NEQ CONTAINED IN THE ARRAY V,WITH WEIGHTS |
|
13 C CONTAINED IN THE ARRAY WT OF LENGTH NEQ. |
|
14 C DDANRM=SQRT((1/NEQ)*SUM(V(I)/WT(I))**2) |
|
15 C----------------------------------------------------------------------- |
|
16 C***ROUTINES CALLED (NONE) |
|
17 C***REVISION HISTORY (YYMMDD) |
|
18 C 830315 DATE WRITTEN |
|
19 C 901009 Finished conversion to SLATEC 4.0 format (F.N.Fritsch) |
|
20 C 901019 Merged changes made by C. Ulrich with SLATEC 4.0 format. |
|
21 C 901026 Added explicit declarations for all variables and minor |
|
22 C cosmetic changes to prologue. (FNF) |
|
23 C***END PROLOGUE DDANRM |
|
24 C |
|
25 INTEGER NEQ, IPAR(*) |
|
26 DOUBLE PRECISION V(NEQ), WT(NEQ), RPAR(*) |
|
27 C |
|
28 INTEGER I |
|
29 DOUBLE PRECISION SUM, VMAX |
|
30 C |
|
31 C***FIRST EXECUTABLE STATEMENT DDANRM |
|
32 DDANRM = 0.0D0 |
|
33 VMAX = 0.0D0 |
|
34 DO 10 I = 1,NEQ |
|
35 IF(ABS(V(I)/WT(I)) .GT. VMAX) VMAX = ABS(V(I)/WT(I)) |
|
36 10 CONTINUE |
|
37 IF(VMAX .LE. 0.0D0) GO TO 30 |
|
38 SUM = 0.0D0 |
|
39 DO 20 I = 1,NEQ |
|
40 20 SUM = SUM + ((V(I)/WT(I))/VMAX)**2 |
|
41 DDANRM = VMAX*SQRT(SUM/NEQ) |
|
42 30 CONTINUE |
|
43 RETURN |
|
44 C------END OF FUNCTION DDANRM------ |
|
45 END |