Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0026/meanq.ssp
There are 2 other files named meanq.ssp in the archive. Click here to see a list.
C                                                                       MEAN  10
C     ..................................................................MEAN  20
C                                                                       MEAN  30
C        SUBROUTINE MEANQ                                               MEAN  40
C                                                                       MEAN  50
C        PURPOSE                                                        MEAN  60
C           COMPUTE SUM OF SQUARES, DEGREES OF FREEDOM, AND MEAN SQUARE MEAN  70
C           USING THE MEAN SQUARE OPERATOR.  THIS SUBROUTINE NORMALLY   MEAN  80
C           FOLLOWS CALLS TO AVDAT AND AVCAL SUBROUTINES IN THE PER-    MEAN  90
C           FORMANCE OF ANALYSIS OF VARIANCE FOR A COMPLETE FACTORIAL   MEAN 100
C           DESIGN.                                                     MEAN 110
C                                                                       MEAN 120
C        USAGE                                                          MEAN 130
C           CALL MEANQ (K,LEVEL,X,GMEAN,SUMSQ,NDF,SMEAN,MSTEP,KOUNT,    MEAN 140
C                        LASTS)                                         MEAN 150
C                                                                       MEAN 160
C        DESCRIPTION OF PARAMETERS                                      MEAN 170
C           K     - NUMBER OF VARIABLES (FACTORS). K MUST BE .GT. ONE.  MEAN 180
C           LEVEL - INPUT VECTOR OF LENGTH K CONTAINING LEVELS (CATE-   MEAN 190
C                   GORIES) WITHIN EACH VARIABLE.                       MEAN 200
C           X     - INPUT VECTOR CONTAINING THE RESULT OF THE SIGMA AND MEAN 210
C                   DELTA OPERATORS. THE LENGTH OF X IS                 MEAN 220
C                   (LEVEL(1)+1)*(LEVEL(2)+1)*...*(LEVEL(K)+1).         MEAN 230
C           GMEAN - OUTPUT VARIABLE CONTAINING GRAND MEAN.              MEAN 240
C           SUMSQ - OUTPUT VECTOR CONTAINING SUMS OF SQUARES.  THE      MEAN 250
C                   LENGTH OF SUMSQ IS 2 TO THE K-TH POWER MINUS ONE,   MEAN 260
C                   (2**K)-1.                                           MEAN 270
C           NDF   - OUTPUT VECTOR CONTAINING DEGREES OF FREEDOM.  THE   MEAN 280
C                   LENGTH OF NDF IS 2 TO THE K-TH POWER MINUS ONE,     MEAN 290
C                   (2**K)-1.                                           MEAN 300
C           SMEAN - OUTPUT VECTOR CONTAINING MEAN SQUARES.  THE         MEAN 310
C                   LENGTH OF SMEAN IS 2 TO THE K-TH POWER MINUS ONE,   MEAN 320
C                   (2**K)-1.                                           MEAN 330
C           MSTEP - WORKING VECTOR OF LENGTH K.                         MEAN 340
C           KOUNT - WORKING VECTOR OF LENGTH K.                         MEAN 350
C           LASTS - WORKING VECTOR OF LENGTH K.                         MEAN 360
C                                                                       MEAN 370
C        REMARKS                                                        MEAN 380
C           THIS SUBROUTINE MUST FOLLOW SUBROUTINE AVCAL                MEAN 390
C                                                                       MEAN 400
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  MEAN 410
C           NONE                                                        MEAN 420
C                                                                       MEAN 430
C        METHOD                                                         MEAN 440
C           THE METHOD IS BASED ON THE TECHNIQUE DISCUSSED BY H. O.     MEAN 450
C           HARTLEY IN 'MATHEMATICAL METHODS FOR DIGITAL COMPUTERS',    MEAN 460
C           EDITED BY A. RALSTON AND H. WILF, JOHN WILEY AND SONS,      MEAN 470
C           1962, CHAPTER 20.                                           MEAN 480
C                                                                       MEAN 490
C     ..................................................................MEAN 500
C                                                                       MEAN 510
      SUBROUTINE MEANQ (K,LEVEL,X,GMEAN,SUMSQ,NDF,SMEAN,MSTEP,KOUNT,    MEAN 520
     1                  LASTS)                                          MEAN 530
      DIMENSION LEVEL(1),X(1),SUMSQ(1),NDF(1),SMEAN(1),MSTEP(1),        MEAN 540
     1          KOUNT(1),LASTS(1)                                       MEAN 550
C                                                                       MEAN 560
C        ...............................................................MEAN 570
C                                                                       MEAN 580
C        IF A DOUBLE PRECISION VERSION OF THIS ROUTINE IS DESIRED, THE  MEAN 590
C        C IN COLUMN 1 SHOULD BE REMOVED FROM THE DOUBLE PRECISION      MEAN 600
C        STATEMENT WHICH FOLLOWS.                                       MEAN 610
C                                                                       MEAN 620
C     DOUBLE PRECISION X,GMEAN,SUMSQ,SMEAN,FN1                          MEAN 630
C                                                                       MEAN 640
C        THE C MUST ALSO BE REMOVED FROM DOUBLE PRECISION STATEMENTS    MEAN 650
C        APPEARING IN OTHER ROUTINES USED IN CONJUNCTION WITH THIS      MEAN 660
C        ROUTINE.                                                       MEAN 670
C                                                                       MEAN 680
C        ...............................................................MEAN 690
C                                                                       MEAN 700
C     CALCULATE TOTAL NUMBER OF DATA                                    MEAN 710
C                                                                       MEAN 720
      N=LEVEL(1)                                                        MEAN 730
      DO 150 I=2,K                                                      MEAN 740
  150 N=N*LEVEL(I)                                                      MEAN 750
C                                                                       MEAN 760
C     SET UP CONTROL FOR MEAN SQUARE OPERATOR                           MEAN 770
C                                                                       MEAN 780
      LASTS(1)=LEVEL(1)                                                 MEAN 790
      DO 178 I=2,K                                                      MEAN 800
  178 LASTS(I)=LEVEL(I)+1                                               MEAN 810
      NN=1                                                              MEAN 820
C                                                                       MEAN 830
C     CLEAR THE AREA TO STORE SUMS OF SQUARES                           MEAN 840
C                                                                       MEAN 850
      LL=(2**K)-1                                                       MEAN 860
      MSTEP(1)=1                                                        MEAN 870
      DO 180 I=2,K                                                      MEAN 880
  180 MSTEP(I)=MSTEP(I-1)*2                                             MEAN 890
      DO 185 I=1,LL                                                     MEAN 900
  185 SUMSQ(I)=0.0                                                      MEAN 910
C                                                                       MEAN 920
C     PERFORM MEAN SQUARE OPERATOR                                      MEAN 930
C                                                                       MEAN 940
      DO 190 I=1,K                                                      MEAN 950
  190 KOUNT(I)=0                                                        MEAN 960
  200 L=0                                                               MEAN 970
      DO 260 I=1,K                                                      MEAN 980
      IF(KOUNT(I)-LASTS(I)) 210, 250, 210                               MEAN 990
  210 IF(L) 220, 220, 240                                               MEAN1000
  220 KOUNT(I)=KOUNT(I)+1                                               MEAN1010
      IF(KOUNT(I)-LEVEL(I)) 230, 230, 250                               MEAN1020
  230 L=L+MSTEP(I)                                                      MEAN1030
      GO TO 260                                                         MEAN1040
  240 IF(KOUNT(I)-LEVEL(I)) 230, 260, 230                               MEAN1050
  250 KOUNT(I)=0                                                        MEAN1060
  260 CONTINUE                                                          MEAN1070
      IF(L) 285, 285, 270                                               MEAN1080
  270 SUMSQ(L)=SUMSQ(L)+X(NN)*X(NN)                                     MEAN1090
      NN=NN+1                                                           MEAN1100
      GO TO 200                                                         MEAN1110
C                                                                       MEAN1120
C     CALCULATE THE GRAND MEAN                                          MEAN1130
C                                                                       MEAN1140
  285 FN=N                                                              MEAN1150
      GMEAN=X(NN)/FN                                                    MEAN1160
C                                                                       MEAN1170
C     CALCULATE FIRST DIVISOR REQUIRED TO FORM SUM OF SQUARES AND SECONDMEAN1180
C     DIVISOR, WHICH IS EQUAL TO DEGREES OF FREEDOM, REQUIRED TO FORM   MEAN1190
C     MEAN SQUARES                                                      MEAN1200
C                                                                       MEAN1210
      DO 310 I=2,K                                                      MEAN1220
  310 MSTEP(I)=0                                                        MEAN1230
      NN=0                                                              MEAN1240
      MSTEP(1)=1                                                        MEAN1250
  320 ND1=1                                                             MEAN1260
      ND2=1                                                             MEAN1270
      DO 340 I=1,K                                                      MEAN1280
      IF(MSTEP(I)) 330, 340, 330                                        MEAN1290
  330 ND1=ND1*LEVEL(I)                                                  MEAN1300
      ND2=ND2*(LEVEL(I)-1)                                              MEAN1310
  340 CONTINUE                                                          MEAN1320
      FN1=N*ND1                                                         MEAN1330
      FN2=ND2                                                           MEAN1340
      NN=NN+1                                                           MEAN1350
      SUMSQ(NN)=SUMSQ(NN)/FN1                                           MEAN1360
      NDF(NN)=ND2                                                       MEAN1370
      SMEAN(NN)=SUMSQ(NN)/FN2                                           MEAN1380
      IF(NN-LL) 345, 370, 370                                           MEAN1390
  345 DO 360 I=1,K                                                      MEAN1400
      IF(MSTEP(I)) 347, 350, 347                                        MEAN1410
  347 MSTEP(I)=0                                                        MEAN1420
      GO TO 360                                                         MEAN1430
  350 MSTEP(I)=1                                                        MEAN1440
      GO TO 320                                                         MEAN1450
  360 CONTINUE                                                          MEAN1460
  370 RETURN                                                            MEAN1470
      END                                                               MEAN1480