GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
ddanrm.f
Go to the documentation of this file.
1 DOUBLE PRECISION FUNCTION ddanrm (NEQ, V, WT, RPAR, IPAR)
2C***BEGIN PROLOGUE DDANRM
3C***SUBSIDIARY
4C***PURPOSE Compute vector norm for DDASSL.
5C***LIBRARY SLATEC (DASSL)
6C***TYPE DOUBLE PRECISION (SDANRM-S, DDANRM-D)
7C***AUTHOR PETZOLD, LINDA R., (LLNL)
8C***DESCRIPTION
9C-----------------------------------------------------------------------
10C THIS FUNCTION ROUTINE COMPUTES THE WEIGHTED
11C ROOT-MEAN-SQUARE NORM OF THE VECTOR OF LENGTH
12C NEQ CONTAINED IN THE ARRAY V,WITH WEIGHTS
13C CONTAINED IN THE ARRAY WT OF LENGTH NEQ.
14C DDANRM=SQRT((1/NEQ)*SUM(V(I)/WT(I))**2)
15C-----------------------------------------------------------------------
16C***ROUTINES CALLED (NONE)
17C***REVISION HISTORY (YYMMDD)
18C 830315 DATE WRITTEN
19C 901009 Finished conversion to SLATEC 4.0 format (F.N.Fritsch)
20C 901019 Merged changes made by C. Ulrich with SLATEC 4.0 format.
21C 901026 Added explicit declarations for all variables and minor
22C cosmetic changes to prologue. (FNF)
23C***END PROLOGUE DDANRM
24C
25 INTEGER neq, ipar(*)
26 DOUBLE PRECISION v(neq), wt(neq), rpar(*)
27C
28 INTEGER i
29 DOUBLE PRECISION sum, vmax
30C
31C***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))
3610 CONTINUE
37 IF(vmax .LE. 0.0d0) GO TO 30
38 sum = 0.0d0
39 DO 20 i = 1,neq
4020 sum = sum + ((v(i)/wt(i))/vmax)**2
41 ddanrm = vmax*sqrt(sum/neq)
4230 CONTINUE
43 RETURN
44C------END OF FUNCTION DDANRM------
45 END
double precision function ddanrm(neq, v, wt, rpar, ipar)
Definition ddanrm.f:2