File: CHISQR.FC of Tape: Sources/Focal/fc3
(.FC,.FO Focal format converted to 'WRITE' listing) 

C-PS/8 FOCAL, 1971

01.01 C     FROM CHISQR BY M.J. MC KEOWN (DECUS: FOCAL8-40)
01.02 C     MODIFIED BY JOHN HUISMAN
01.03 C     OMSI SOFTWARE DEVELOPMENT GROUP
01.04 C     LAST CHANGE: 9/9/71
01.05 
01.06 C     THE PROGRAM WILL PRINT THE DATA MATRIX WITH TWO 
01.07 C VALUES IN EACH CELL.  ONE IS THE OBSERVED VALUE AND
01.08 C THE OTHER IS THE EXPECTED VALUE AS CALCULATED.  YOU MAY HAVE UP TO
01.09 C 10 DIGIT PRECISION, BUT IT IS VARIABLE.  YOU MAY ENTER A
01.10 C MATRIX NO LARGER THAN 25 ELEMENTS.  THE WIDTH THAT THE MATRIX
01.11 C MAY BE DEPENDS ON THE PRECISION YOU CHOOSE, AND THE WIDTH
01.12 C OF YOUR OUTPUT DEVICE.
01.13 
01.14 C ** RS IS THE ROW SUM.
01.15 C ** CS IS THE COLUMN SUM.
01.16 E
01.17 I (FITR(#/30)-(#/30)) 1.18,1.3,1.18
01.18 T "YOU DO NOT HAVE ENOUGH FEATURES.  "
01.19 T "RESTART FOCAL WITH FEATURES 2 AND 3.",!;Q
01.20 
01.30 S X=FOUT(24)+FOUT(1);F K=1,100;E
01.31 T "HOW MANY PLACES ACCURATE?";A AC;S X1=(100*AC+3)/100;T %(X1)
01.32 A "ROWS:"R,"COLUMNS:"C;S DF=(R-1)*(C-1);S L=R*C
01.33 S K=0;F I=1,R;S RS(I-1)=RP;S RP=0;D 1.4
01.34 S RS(I-1)=RP
01.35 T %(X1),!"NO MORE INPUT!"!;G 2.01
01.40 F J=1,C;D 1.41
01.41 S K=K+1;D 11;T !"SAMPLE"I,%1,","J,": ";G 1.42
01.42 A N(K);I (10^AC-N(K)) 1.43,1.43;S RP=RP+N(K);S CS(J)=CS(J)+N(K)
01.43 T "TOO MANY DIGITS - INPUT AGAIN OR INCREASE ACCURACY",!,"?";G 1.42

02.01 F J=1,1,R;S T=T+RS(J)
02.02 S J=1;S I=1;S K=1
02.03 S E(K)=(RS(I)/T)*CS(J);S J=J+1;S K=K+1
02.04 I (C-J)2.05,2.03,2.03
02.05 S J=1;S I=I+1
02.06 I (R-I)3.01,2.03,2.03

03.01 F K=1,1,L;S X2=X2+((N(K)-E(K))^2)/E(K)

04.01 T !!;S K=1;S Y=1;S N=1;S I=1;D 10;D 8.0;T !
04.02 F J=1,1,C;D 6.0
04.03 T "*",!,"*";F J=1,C;D 5;T "*"
04.04 T "*  ","RS:"RS(N);S N=N+1;T !
04.05 F J=1,1,C;D 7.0
04.06 T "*";T !;D 8.0;T !;S I=I+1;I (R-I)4.07,4.02,4.02
04.07 T !;F J=1,1,C;D 9.0
04.08 T %,"  TOTAL:"T,!!,"CHI-SQUARED:"X2
04.09 T %(X1),"   DEGREES OF FREEDOM:"DF,!!
04.10 A "MORE?"Z;I (Z-0YES) 4.11,1.3,4.11
04.11 Q

05.01 T :(1+J*(9+AC))

06.01 T "*  O:"N(K),;D 5.01;S K=K+1

07.01 T "*  E:"E(Y),;D 5.01;S Y=Y+1

08.01 F M=1,(C*(AC+9)+1);T "*"

09.01 T " CS:"CS(J)," "

10.01 T "E = EXPECTED VALUE     O = OBSERVED VALUE",!!

11.10 S ZF=1+FITR(FLOG(I)/FLOG(10));T %(ZF);R