File: varlog.f

package info (click to toggle)
x13as 1.1-B39-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bullseye
  • size: 8,700 kB
  • sloc: fortran: 110,641; makefile: 14
file content (44 lines) | stat: -rw-r--r-- 1,443 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
      DOUBLE PRECISION FUNCTION varlog(X,I,J,Iopt)
      IMPLICIT NONE
c     ------------------------------------------------------------------
C --- THIS FUNCTION COMPUTES THE LOG VARIANCE OF X. IF IOPT IS EQUAL
C --- TO 1 THE LOG MEAN IS ASSUMED TO BE 1.
c     ------------------------------------------------------------------
      DOUBLE PRECISION ZERO,ONE
      PARAMETER(ZERO=0D0,ONE=1D0)
c-----------------------------------------------------------------------
      INCLUDE 'notset.prm'
      INCLUDE 'srslen.prm'
      INCLUDE 'goodob.cmn'
c     ------------------------------------------------------------------
      DOUBLE PRECISION tmp,tmp2,X,numtmp
      INTEGER I,Iopt,J,k
      DIMENSION X(*)
c     ------------------------------------------------------------------
      tmp=ZERO
      numtmp=ZERO
      IF(Iopt.ne.1)THEN
       DO k=I,J
        IF(Gudval(k).and.X(k).gt.ZERO)THEN
         tmp=tmp+dlog(X(k))
         numtmp=numtmp+ONE
        END IF
       END DO
       IF(numtmp.gt.ZERO)THEN
        tmp=tmp/numtmp
       ELSE
        varlog=DNOTST
        RETURN
       END IF
      END IF
c     ------------------------------------------------------------------
      varlog=ZERO
      DO k=I,J
       IF(Gudval(k).and.X(k).gt.ZERO)THEN
        tmp2=dlog(X(k))-tmp
        varlog=varlog+tmp2*tmp2
       END IF
      END DO
c     ------------------------------------------------------------------
      RETURN
      END