File: TALLY.FT of Tape: Various/ETH/eth11-2
(Source file text) 

C
C     ..................................................................
C
C        SUBROUTINE TALLY
C
C        PURPOSE
C           CALCULATE TOTAL, MEAN, STANDARD DEVIATION, MINIMUM, MAXIMUM
C           FOR EACH VARIABLE IN A SET (OR A SUBSET) OF OBSERVATIONS
C
C        USAGE
C           CALL TALLY(A,S,TOTAL,AVER,SD,VMIN,VMAX,NO,NV,IER)
C
C        DESCRIPTION OF PARAMETERS
C           A     - OBSERVATION MATRIX, NO BY NV
C           S     - INPUT VECTOR INDICATING SUBSET OF A. ONLY THOSE
C                   OBSERVATIONS WITH A NON-ZERO S(J) ARE CONSIDERED.
C                   VECTOR LENGTH IS NO.
C           TOTAL - OUTPUT VECTOR OF TOTALS OF EACH VARIABLE. VECTOR
C                   LENGTH IS NV.
C           AVER  - OUTPUT VECTOR OF AVERAGES OF EACH VARIABLE. VECTOR
C                   LENGTH IS NV.
C           SD    - OUTPUT VECTOR OF STANDARD DEVIATIONS OF EACH
C                   VARIABLE. VECTOR LENGTH IS NV.
C           VMIN  - OUTPUT VECTOR OF MINIMA OF EACH VARIABLE. VECTOR
C                   LENGTH IS NV.
C           VMAX  - OUTPUT VECTOR OF MAXIMA OF EACH VARIABLE. VECTOR
C                   LENGTH IS NV.
C           NO    - NUMBER OF OBSERVATIONS
C           NV    - NUMBER OF VARIABLES FOR EACH OBSERVATION
C           IER   - ZERO, IF NO ERROR.
C                 - 1,IF S IS NULL. VMIN=1.E37,VMAX=-1.E37.,SD=AVER=0
C                 - 2, IF S HAS ONLY ONE NON-ZERO ELEMENT. VMIN=VMAX.
C                   SD=0.0
C
C        REMARKS
C           NONE
C
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C           NONE
C
C        METHOD
C           ALL OBSERVATIONS CORRESPONDING TO A NON-ZERO ELEMENT IN S
C           VECTOR ARE ANALYZED FOR EACH VARIABLE IN MATRIX A.
C           TOTALS ARE ACCUMULATED AND MINIMUM AND MAXIMUM VALUES ARE
C           FOUND. FOLLOWING THIS, MEANS AND STANDARD DEVIATIONS ARE
C           CALCULATED.  THE DIVISOR FOR STANDARD DEVIATION IS ONE LESS
C           THAN THE NUMBER OF OBSERVATIONS USED.
C
C     ..................................................................
C
      SUBROUTINE TALLY(A,S,TOTAL,AVER,SD,VMIN,VMAX,NO,NV,IER)
      DIMENSION A(1),S(1),TOTAL(1),AVER(1),SD(1),VMIN(1),VMAX(1)
C
C        CLEAR OUTPUT VECTORS AND INITIALIZE VMIN,VMAX
C
      IER=0
      DO 1 K=1,NV
      TOTAL(K)=0.0
      AVER(K)=0.0
      SD(K)=0.0
      VMIN(K)=1.0E37
    1 VMAX(K)=-1.0E37
C
C        TEST SUBSET VECTOR
C
      SCNT=0.0
      DO 7 J=1,NO
      IJ=J-NO
      IF(S(J)) 2,7,2
    2 SCNT=SCNT+1.0
C
C        CALCULATE TOTAL, MINIMA, MAXIMA
C
      DO 6 I=1,NV
      IJ=IJ+NO
	X=A(IJ)
      TOTAL(I)=TOTAL(I)+X
      IF(X-VMIN(I)) 3,4,4
    3 VMIN(I)=X
    4 IF(X-VMAX(I)) 6,6,5
    5 VMAX(I)=X
    6 SD(I)=SD(I)+X*X
    7 CONTINUE
C
C        CALCULATE MEANS AND STANDARD DEVIATIONS
C
      IF (SCNT)8,8,9
    8 IER=1
      GO TO 15
    9 DO 10 I=1,NV
   10 AVER(I)=TOTAL(I)/SCNT
      IF (SCNT-1.0) 13,11,13
   11 IER=2
      DO 12 I=1,NV
   12 SD(I)=0.0
      GO TO 15
   13 DO 14 I=1,NV
   14 SD(I)=SQRT(ABS((SD(I)-TOTAL(I)*TOTAL(I)/SCNT)/(SCNT-1.0)))
   15 RETURN
      END