DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 14208 (0x3780) Types: TextFile Names: »KUFI.PAS«
└─⟦692ac107c⟧ Bits:30005923 PolyPascal-80 V3.10 arbejdsdiskette 1 └─ ⟦this⟧ »KUFI.PAS«
«nul»«nul»«nul» «nul»«nul»«nul» PROGRAM CURVEFIT;«nul»«nul»«nul» LABEL 5,8,10,15,20,35,40,45,50,70,99,110,220,330,440;«nul»«nul»«nul» CONST MAX=100;«nul»«nul»«nul» SP=32;(*SPACE*)«nul»«nul»«nul» FF=12;(*CLEAR SCREEN*)«nul»«nul»«nul» ESC=27;«nul»«nul»«nul» U=999999.0;«nul»«nul»«nul» VAR (*Prefix "S" stands for SUMMA*)«nul»«nul»«nul» SX,SX2,SX3,SX4,SLNX,SLNX2,SLNX3,SLNX4«nul»«nul»«nul» ,SY,SY2,SLNY,SLNY2,SXY,SX2Y,SXLNY,SX2LNY«nul»«nul»«nul» ,SYLNX,SYLNX2,SLNXLNY,SLNX2LNY«nul»«nul»«nul» ,A1,A2,A3,B1,B2,B3,C1,C2,C3,D1,D2,D3«nul»«nul»«nul» ,DENOM,A,B,C,SMIN,XINP,YCALC,SR2 ,XMIN«nul»«nul»«nul» ,YMIN,STDEV,R:REAL;«nul»«nul»«nul» I,NP,NR,K,BEST,CALCXY,FIT,NLINES,OM,SAVEOM«nul»«nul»«nul» ,COPY,SWAP:INTEGER;«nul»«nul»«nul» CH:STRINGÆ1Å;«nul»«nul»«nul» X: ARRAYÆ1..MAXÅ OF REAL;«nul»«nul»«nul» Y: ARRAYÆ1..MAXÅ OF REAL;«nul»«nul»«nul» S: ARRAYÆ1..8Å OF REAL;«nul»«nul»«nul» PROCEDURE TOPLINE(S:STRINGÆ48Å);«nul»«nul»«nul» (*UNSCROLLED TEXT ON NASCOM SCREEN*)«nul»«nul»«nul» CONST TOPLINEADR=$0BC9;«nul»«nul»«nul» VAR P:INTEGER;«nul»«nul»«nul» BEGIN«nul»«nul»«nul» FOR P:=1 TO LENGTH(S) DO«nul»«nul»«nul» MEMÆP+TOPLINEADRÅ:=ORD(MID(S,P,1));«nul»«nul»«nul» FOR P:=P TO 48 DO«nul»«nul»«nul» MEMÆP+TOPLINEADRÅ:=SP;«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE DELAY(D:INTEGER);«nul»«nul»«nul» VAR I:INTEGER;«nul»«nul»«nul» BEGIN FOR I:=1 TO D*1000 DO;«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE SPCONT;«nul»«nul»«nul» LABEL 99;«nul»«nul»«nul» BEGIN«nul»«nul»«nul» IF OM>0 THEN GOTO 99;«nul»«nul»«nul» SCREEN(12,14);WRITE('PRESS SPACE TO CONTINUE!');«nul»«nul»«nul» REPEAT UNTIL KEYBOARD=SP;DELAY(8);«nul»«nul»«nul» 99:«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» (*PRINTER ROUTINES*)«nul»«nul»«nul» PROCEDURE PRT;«nul»«nul»«nul» CODE $D7,$02,$75,$00,$E1,$DF,$71;«nul»«nul»«nul» PROCEDURE CRTPRT;«nul»«nul»«nul» CODE $D7,$03,$65,$75,$00,$E1,$DF,$71;«nul»«nul»«nul» PROCEDURE CRT;«nul»«nul»«nul» CODE $DF,$77;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE PRINTER;CODE«nul»«nul»«nul» $D7,$50,$FE,$98,$20,$02,$3E,$95,$FE,$D2,«nul»«nul»«nul» $20,$02,$3E,$81,$FE,$F8,$20,$02,$3E,$89,«nul»«nul»«nul» $FE,$AB,$20,$02,$3E,$BA,$D7,$2C,$FE,$0D,«nul»«nul»«nul» $C0,$3E,$0A,$D7,$25,$3A,$03,$08,$CB,$5F,«nul»«nul»«nul» $C8,$3A,$00,$08,$3D,$32,$00,$08,$C0,$3A,«nul»«nul»«nul» $02,$08,$32,$00,$08,$3A,$01,$08,$3C,$32,«nul»«nul»«nul» $01,$08,$06,$0C,$3E,$0A,$D7,$04,$10,$FA,«nul»«nul»«nul» $3E,$0D,$F5,$DB,$00,$17,$38,$FB,$F1,$DF,«nul»«nul»«nul» $6F,$C9,$E1,$22,$78,$0C,$3E,$C3,$32,$77,«nul»«nul»«nul» $0C;«nul»«nul»«nul» PROCEDURE OMODE(X:INTEGER);«nul»«nul»«nul» (*SETS OUTPUT MODE.*)«nul»«nul»«nul» BEGIN«nul»«nul»«nul» OM:=X;«nul»«nul»«nul» CASE OM OF«nul»«nul»«nul» 0: CRT;«nul»«nul»«nul» 1: PRT;«nul»«nul»«nul» 2:CRTPRT;«nul»«nul»«nul» END;«nul»«nul»«nul» END;«nul»«nul»«nul» PROCEDURE CS;(*CLEAR SCREEN*)«nul»«nul»«nul» BEGIN SAVEOM:=OM;OMODE(0);WRITE(CHR(FF));OMODE(SAVEOM);«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE PP(PARAM:STRINGÆ4Å);«nul»«nul»«nul» BEGIN«nul»«nul»«nul» WRITE(CHR(27));(*ESC*)«nul»«nul»«nul» FOR I:=1 TO LENGTH(PARAM) DO WRITE(MID(PARAM,I,1));«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE PRINTPARAM;«nul»«nul»«nul» (*PROGRAMMING PRINTER*)«nul»«nul»«nul» BEGIN«nul»«nul»«nul» (*PAGE PARAMETERS*)«nul»«nul»«nul» INIT MEMÆ$800Å TO $3C,$00,$3C;(*60 LINES/PAGE*)«nul»«nul»«nul» MEMÆ$803Å:=$08;(*FORM FEEDS*)«nul»«nul»«nul» (*MEMÆ$803Å:=$00 NO FORM FEED*)«nul»«nul»«nul» PRINTER;OMODE(1);«nul»«nul»«nul» WRITE(CHR(15));(*ELONGATED? 14=+,15=- *)«nul»«nul»«nul» PP('F');«nul»«nul»«nul» PP('N');«nul»«nul»«nul» PP('A');«nul»«nul»«nul» PP('"');«nul»«nul»«nul» PP('Y');«nul»«nul»«nul» PP('L010');«nul»«nul»«nul» PP('&');«nul»«nul»«nul» OMODE(0);«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE RSQRT(I:INTEGER);«nul»«nul»«nul» BEGIN«nul»«nul»«nul» WRITELN('SUM OF SQUARED RESIDUALS =',SR2);WRITELN;«nul»«nul»«nul» SR2:=ABS(SR2); STDEV:=SQRT(SR2/(NP-3)); SÆIÅ:=STDEV;«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE EQUATIONS(TYPE:INTEGER);«nul»«nul»«nul» (*SOLVES THREE LINEAR EQUATIONS IN THREE VARIABELS, A,B AND C*)«nul»«nul»«nul» LABEL 99;«nul»«nul»«nul» BEGIN«nul»«nul»«nul» SAVEOM:=OM; CS;«nul»«nul»«nul» DENOM:=A1*(B2*C3-B3*C2)+A2*(B3*C1-B1*C3)+A3*(B1*C2-B2*C1);«nul»«nul»«nul» IF DENOM=0 THEN«nul»«nul»«nul» BEGIN«nul»«nul»«nul» WRITELN('DENOM =0!,SKIPPED');«nul»«nul»«nul» REPEAT UNTIL KEYBOARD=SP;«nul»«nul»«nul» GOTO 99;«nul»«nul»«nul» END;«nul»«nul»«nul» A:=(D1*(B3*C2-B2*C3)+D2*(B1*C3-B3*C1)+D3*(B2*C1-B1*C2))/DENOM;«nul»«nul»«nul» B:=(D1*(A2*C3-A3*C2)+D2*(A3*C1-A1*C3)+D3*(A1*C2-A2*C1))/DENOM;«nul»«nul»«nul» C:=(D1*(A3*B2-A2*B3)+D2*(A1*B3-A3*B1)+D3*(A2*B1-A1*B2))/DENOM;«nul»«nul»«nul» «nul»«nul»«nul» CASE TYPE OF«nul»«nul»«nul» 1:BEGIN«nul»«nul»«nul» WRITELN('1. QUADRATIC FIT:');«nul»«nul»«nul» IF CALCXY=1 THEN OMODE(0);«nul»«nul»«nul» SR2:=SY2-A*SX2Y-B*SXY-C*SY;«nul»«nul»«nul» RSQRT(1+SWAP);«nul»«nul»«nul» END;«nul»«nul»«nul» 2:BEGIN«nul»«nul»«nul» WRITELN('2.EXPONENTIAL FIT:');«nul»«nul»«nul» IF CALCXY=1 THEN OMODE(0);«nul»«nul»«nul» SR2:=SLNY2-A*SX2LNY-B*SXLNY-C*SLNY;«nul»«nul»«nul» RSQRT(2+SWAP);«nul»«nul»«nul» END;«nul»«nul»«nul» 3:BEGIN«nul»«nul»«nul» WRITELN('3.LOGARITHMIC FIT:');«nul»«nul»«nul» IF CALCXY=1 THEN OMODE(0);«nul»«nul»«nul» SR2:=SY2-A*SYLNX2-B*SYLNX-C*SY;«nul»«nul»«nul» RSQRT(3+SWAP);«nul»«nul»«nul» END;«nul»«nul»«nul» 4:BEGIN«nul»«nul»«nul» WRITELN('4.POWER FIT:');«nul»«nul»«nul» IF CALCXY=1 THEN OMODE(0);«nul»«nul»«nul» SR2:=SLNY2-A*SLNX2LNY-B*SLNXLNY-C*SLNY;«nul»«nul»«nul» RSQRT(4+SWAP);«nul»«nul»«nul» END;«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» IF STDEV=U THEN GOTO 99;«nul»«nul»«nul» WRITELN('A =',A:16:8);«nul»«nul»«nul» WRITELN('B =',B:16:8);«nul»«nul»«nul» WRITELN('C =',C:16:8);«nul»«nul»«nul» WRITELN;«nul»«nul»«nul» WRITELN('STANDARD DEVIATION =',STDEV:10:6);«nul»«nul»«nul» WRITELN;WRITELN;SPCONT;«nul»«nul»«nul» 99:OMODE(SAVEOM);«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE NL;«nul»«nul»«nul» BEGIN«nul»«nul»«nul» NLINES:=NLINES+1;«nul»«nul»«nul» IF NLINES=13 THEN«nul»«nul»«nul» BEGIN«nul»«nul»«nul» NLINES:=0;WRITELN;«nul»«nul»«nul» IF CH<>'P' THEN SPCONT;«nul»«nul»«nul» END;«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE SORTPOINTS;«nul»«nul»«nul» BEGIN«nul»«nul»«nul» FOR I:=1 TO NP DO«nul»«nul»«nul» BEGIN«nul»«nul»«nul» XMIN:=XÆIÅ;YMIN:=YÆIÅ;«nul»«nul»«nul» FOR K:=I+1 TO NP DO«nul»«nul»«nul» IF XMIN>XÆKÅ THEN«nul»«nul»«nul» BEGIN«nul»«nul»«nul» XÆIÅ:=XÆKÅ;YÆIÅ:=YÆKÅ;«nul»«nul»«nul» XÆKÅ:=XMIN;YÆKÅ:=YMIN;«nul»«nul»«nul» XMIN:=XÆIÅ;YMIN:=YÆIÅ;«nul»«nul»«nul» END;«nul»«nul»«nul» END;«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE LIST;«nul»«nul»«nul» LABEL 99;«nul»«nul»«nul» BEGIN«nul»«nul»«nul» «nul»«nul»«nul» CS;TOPLINE ('**** Curve fitting program ***');«nul»«nul»«nul» CASE CH OF«nul»«nul»«nul» 'D','L':OMODE(0);«nul»«nul»«nul» 'P': OMODE(2);«nul»«nul»«nul» 'T': OMODE(4);«nul»«nul»«nul» END;«nul»«nul»«nul» SORTPOINTS;«nul»«nul»«nul» IF NP=0 THEN GOTO 99;«nul»«nul»«nul» WRITELN('OBSERVED X,Y-VALUES:');WRITELN;«nul»«nul»«nul» WRITELN(' X Y');«nul»«nul»«nul» NLINES:=3;«nul»«nul»«nul» FOR I:=1 TO NP DO«nul»«nul»«nul» BEGIN WRITELN(I:3,'. ',XÆIÅ:11:6,' ',YÆIÅ:11:6);NL;«nul»«nul»«nul» END;«nul»«nul»«nul» 99:«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» PROCEDURE EDIT;«nul»«nul»«nul» LABEL 10,99;«nul»«nul»«nul» BEGIN«nul»«nul»«nul» 10:«nul»«nul»«nul» SAVEOM:=OM;OMODE(0);«nul»«nul»«nul» WRITE(CHR(ESC)«nul»«nul»«nul» ,'DEL,LIST,FIT,PRINT,SWAPXY,QUIT? ');«nul»«nul»«nul» READ(CH);WRITE(CH);DELAY(4);«nul»«nul»«nul» IF CH='P' THEN COPY:=1;«nul»«nul»«nul» IF COPY=1 THEN PRINTPARAM«nul»«nul»«nul» ELSE COPY:=0;«nul»«nul»«nul» OMODE(SAVEOM);«nul»«nul»«nul» CASE CH OF«nul»«nul»«nul» 'D': BEGIN(*DELETE*)«nul»«nul»«nul» WRITELN;WRITE('DEL.POINT NR. ');«nul»«nul»«nul» NR:=0;READ(NR);«nul»«nul»«nul» IF (NR<1) OR (NR>NP) THEN«nul»«nul»«nul» BEGIN WRITE(CHR(ESC));GOTO 99;«nul»«nul»«nul» END;«nul»«nul»«nul» FOR K:=NR TO NP-1 DO«nul»«nul»«nul» BEGIN XÆKÅ:=XÆK+1Å; YÆKÅ:=YÆK+1Å;«nul»«nul»«nul» END;«nul»«nul»«nul» NP:=NP-1;LIST;«nul»«nul»«nul» END;«nul»«nul»«nul» 'S' :BEGIN«nul»«nul»«nul» FOR I:=1 TO NP DO«nul»«nul»«nul» BEGIN R:=XÆIÅ;XÆIÅ:=YÆIÅ;YÆIÅ:=R;«nul»«nul»«nul» END;«nul»«nul»«nul» IF SWAP=0 THEN SWAP:=4 ELSE SWAP:=0;«nul»«nul»«nul» LIST;«nul»«nul»«nul» END;«nul»«nul»«nul» 'L','P':LIST;«nul»«nul»«nul» 'F','Q':;«nul»«nul»«nul» OTHERS:GOTO 10;«nul»«nul»«nul» END;«nul»«nul»«nul» 99:«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» (************ MAIN PROGRAM ************)«nul»«nul»«nul» BEGIN«nul»«nul»«nul» 5:(*RESET VARIABLES MAY BE USED IN A SECOND RUN!):*)«nul»«nul»«nul» SX:=0;SX2:=0;SX3:=0;SX4:=0;SLNX:=0;«nul»«nul»«nul» SLNX2:=0;SLNX3:=0;SLNX4:=0;SY:=0;«nul»«nul»«nul» SY2:=0;SLNY:=0;SLNY2:=0;SXY:=0;«nul»«nul»«nul» SX2Y:=0;SXLNY:=0;SX2LNY:=0;SYLNX:=0;«nul»«nul»«nul» SYLNX2:=0;SLNXLNY:=0;SLNX2LNY:=0;«nul»«nul»«nul» FOR I:=1 TO 8 DO SÆIÅ:=U;CALCXY:=0;«nul»«nul»«nul» «nul»«nul»«nul» (*INPUT CORRESPONDING VALUES OF OBS. X AND Y:*)«nul»«nul»«nul» 8:«nul»«nul»«nul» CH:='L';OMODE(0);LIST;«nul»«nul»«nul» 10:«nul»«nul»«nul» NP:=NP+1;WRITE(NP:3,'. ');«nul»«nul»«nul» XÆNPÅ:=U;READ(XÆNPÅ);WRITE(' ');«nul»«nul»«nul» IF XÆNPÅ=U THEN«nul»«nul»«nul» BEGIN NP:=NP-1;EDIT;«nul»«nul»«nul» CASE CH OF«nul»«nul»«nul» 'F':GOTO 20;«nul»«nul»«nul» 'Q':GOTO 99;«nul»«nul»«nul» OTHERS:GOTO 10;«nul»«nul»«nul» END;«nul»«nul»«nul» END;«nul»«nul»«nul» 15:«nul»«nul»«nul» SCREEN(20,0);YÆNPÅ:=U;READ(YÆNPÅ);«nul»«nul»«nul» IF YÆNPÅ=U THEN GOTO 15;WRITELN;«nul»«nul»«nul» IF NP<MAX THEN GOTO 10;«nul»«nul»«nul» 20:«nul»«nul»«nul» (*CALCULATE SUMS*)«nul»«nul»«nul» SAVEOM:=OM;OMODE(0);«nul»«nul»«nul» WRITELN;WRITELN('CALCULATING!');«nul»«nul»«nul» OMODE(SAVEOM);«nul»«nul»«nul» FOR I:=1 TO NP DO«nul»«nul»«nul» BEGIN«nul»«nul»«nul» SX:=SX+XÆIÅ;«nul»«nul»«nul» SX2:=SX2+SQR(XÆIÅ);«nul»«nul»«nul» SX3:=SX3+SQR(XÆIÅ)*XÆIÅ;«nul»«nul»«nul» SX4:=SX4+SQR(SQR(XÆIÅ));«nul»«nul»«nul» SLNX:=SLNX+LN(XÆIÅ);«nul»«nul»«nul» SLNX2:=SLNX2+SQR(LN(XÆIÅ));«nul»«nul»«nul» SLNX3:=SLNX3+LN(XÆIÅ)*SQR(LN(XÆIÅ));«nul»«nul»«nul» SLNX4:=SLNX4+SQR(SQR(LN(XÆIÅ)));«nul»«nul»«nul» SY:=SY+YÆIÅ;«nul»«nul»«nul» SY2:=SY2+SQR(YÆIÅ);«nul»«nul»«nul» SLNY:=SLNY+LN(YÆIÅ);«nul»«nul»«nul» SLNY2:=SLNY2+SQR(LN(YÆIÅ));«nul»«nul»«nul» SXY:=SXY+XÆIÅ*YÆIÅ;«nul»«nul»«nul» SX2Y:=SX2Y+SQR(XÆIÅ)*YÆIÅ;«nul»«nul»«nul» SXLNY:=SXLNY+XÆIÅ*LN(YÆIÅ);«nul»«nul»«nul» SX2LNY:=SX2LNY+SQR(XÆIÅ)*LN(YÆIÅ);«nul»«nul»«nul» SYLNX:=SYLNX+YÆIÅ*LN(XÆIÅ);«nul»«nul»«nul» SYLNX2:=SYLNX2+YÆIÅ*SQR(LN(XÆIÅ));«nul»«nul»«nul» SLNXLNY:=SLNXLNY+LN(XÆIÅ)*LN(YÆIÅ);«nul»«nul»«nul» SLNX2LNY:=SLNX2LNY+SQR(LN(XÆIÅ))*LN(YÆIÅ);«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» (*OUTPUT CALCULATED SUMS:*)«nul»«nul»«nul» SPCONT;CS;«nul»«nul»«nul» IF COPY=1 THEN«nul»«nul»«nul» BEGIN«nul»«nul»«nul» SAVEOM:=OM;OMODE(1);«nul»«nul»«nul» WRITELN;WRITELN;WRITELN;«nul»«nul»«nul» OMODE(SAVEOM);«nul»«nul»«nul» END;«nul»«nul»«nul» WRITELN('CALCULATED SUMS:');«nul»«nul»«nul» WRITELN(CHR(171),'X = ',SX:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'X^2 = ',SX2:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'X^3 = ',SX3:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'X^4 = ',SX4:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'LN(X) = ',SLNX:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'LN(X)^2 = ',SLNX2:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'LN(X)^3 = ',SLNX3:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'LN(X)^4 = ',SLNX4:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'Y = ',SY:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'Y^2 = ',SY2:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'LN(Y) ',SLNY:20:10);«nul»«nul»«nul» WRITELN(CHR(171),'LN(Y)^2 = ',SLNY2:20:10);«nul»«nul»«nul» SPCONT;CS;«nul»«nul»«nul» WRITELN(CHR(171),' X*Y ',SXY:20:10);«nul»«nul»«nul» WRITELN(CHR(171),' Y*X^2 ',SX2Y:20:10);«nul»«nul»«nul» WRITELN(CHR(171),' X*LN(Y) ',SXLNY:20:10);«nul»«nul»«nul» WRITELN(CHR(171),' X^2*LN(Y)',SX2LNY:20:10);«nul»«nul»«nul» WRITELN(CHR(171),' Y*LN(X) ',SYLNX:20:10);«nul»«nul»«nul» WRITELN(CHR(171),' Y*LN(X)^2',SYLNX2:20:10);«nul»«nul»«nul» WRITELN(CHR(171),' LNX*LNY ',SLNXLNY:20:10);«nul»«nul»«nul» WRITELN(CHR(171),' LNX2*LNY ',SLNX2LNY:20:10);«nul»«nul»«nul» WRITELN;WRITELN('NUMBER OF POINTS= ',NP);«nul»«nul»«nul» WRITELN;WRITELN;WRITELN;«nul»«nul»«nul» WRITELN('FITS:');SPCONT;CS;«nul»«nul»«nul» (*CALCULATE COEFFICIENTS IN LINAER EQUATIONS*)«nul»«nul»«nul» 110:(*1. Linear case :*)«nul»«nul»«nul» A1:=SX4;A2:=SX3;A3:=SX2;«nul»«nul»«nul» B1:=SX3;B2:=SX2;B3:=SX;«nul»«nul»«nul» C1:=SX2;C2:=SX;C3:=NP;«nul»«nul»«nul» D1:=-SX2Y;D2:=-SXY;D3:=-SY;«nul»«nul»«nul» EQUATIONS(1);«nul»«nul»«nul» IF CALCXY=1 THEN GOTO 35;«nul»«nul»«nul» «nul»«nul»«nul» 220:(*2. Exponential case:*)«nul»«nul»«nul» A1:=SX4;A2:=SX3;A3:=SX2;«nul»«nul»«nul» B1:=SX3;B2:=SX2;B3:=SX;«nul»«nul»«nul» C1:=SX2;C2:=SX;C3:=NP;«nul»«nul»«nul» D1:=-SX2LNY;D2:=-SXLNY;D3:=-SLNY;«nul»«nul»«nul» EQUATIONS(2);«nul»«nul»«nul» IF CALCXY=1 THEN GOTO 35;«nul»«nul»«nul» 330:(*3. Logarithmic case:*)«nul»«nul»«nul» A1:=SLNX4;A2:=SLNX3;A3:=SLNX2;«nul»«nul»«nul» B1:=SLNX3;B2:=SLNX2;B3:=SLNX;«nul»«nul»«nul» C1:=SLNX2;C2:=SLNX;C3:=NP;«nul»«nul»«nul» D1:=-SYLNX2;D2:=-SYLNX;D3:=-SY;«nul»«nul»«nul» EQUATIONS(3);«nul»«nul»«nul» IF CALCXY=1 THEN GOTO 35;«nul»«nul»«nul» 440:(*4. Power case:*)«nul»«nul»«nul» A1:=SLNX4;A2:=SLNX3;A3:=SLNX2;«nul»«nul»«nul» B1:=SLNX3;B2:=SLNX2;B3:=SLNX;«nul»«nul»«nul» C1:=SLNX2;C2:=SLNX;C3:=NP;«nul»«nul»«nul» D1:=-SLNX2LNY;D2:=-SLNXLNY;D3:=-SLNY;«nul»«nul»«nul» EQUATIONS(4);«nul»«nul»«nul» IF CALCXY=1 THEN GOTO 35;«nul»«nul»«nul» «nul»«nul»«nul» (*FIND BEST FIT*)«nul»«nul»«nul» SMIN:=SÆ1Å;BEST:=1;«nul»«nul»«nul» FOR I:=2 TO 8 DO«nul»«nul»«nul» IF SÆIÅ<SMIN THEN«nul»«nul»«nul» BEGIN SMIN:=SÆIÅ;«nul»«nul»«nul» BEST:=I;«nul»«nul»«nul» END;«nul»«nul»«nul» CS;«nul»«nul»«nul» CASE BEST OF«nul»«nul»«nul» 1: WRITE('FIT 1 BEST! (QUADRATIC)');«nul»«nul»«nul» 2: WRITE('FIT 2 BEST (EXPONENTIAL)');«nul»«nul»«nul» 3: WRITE('FIT 3 BEST (LOGARITHMIC)');«nul»«nul»«nul» 4: WRITE('FIT 4 BEST (POWER)');«nul»«nul»«nul» 5: WRITE('FIT 5 BEST! (QUADRATIC)');«nul»«nul»«nul» 6: WRITE('FIT 6 BEST! (EXPONENTIAL)');«nul»«nul»«nul» 7: WRITE('FIT 7 BEST! (LOGARITHMIC)');«nul»«nul»«nul» 8: WRITE('FIT 8 BEST! (POWER)');«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» WRITELN(' (ST.DEV = ',SÆBESTÅ:9:6,')');«nul»«nul»«nul» CALCXY:=1;«nul»«nul»«nul» 50:«nul»«nul»«nul» WRITELN;FIT:=0;SAVEOM:=OM;OMODE(0);«nul»«nul»«nul» WRITE('FIT 1,2,3,4 OR CR? ');READLN(FIT);«nul»«nul»«nul» OMODE(SAVEOM);WRITELN;«nul»«nul»«nul» IF FIT=0 THEN«nul»«nul»«nul» BEGIN;«nul»«nul»«nul» CALCXY:=0;OMODE(0);(*PRINTER OFF*);«nul»«nul»«nul» WRITE('REPEAT,QUIT?');«nul»«nul»«nul» 70:READ(CH);«nul»«nul»«nul» CASE CH OF«nul»«nul»«nul» 'R': BEGIN WRITELN;GOTO 5;«nul»«nul»«nul» END;«nul»«nul»«nul» 'Q':GOTO 99;«nul»«nul»«nul» OTHERS:GOTO 70;«nul»«nul»«nul» END;«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» CASE FIT OF«nul»«nul»«nul» 1:GOTO 110;«nul»«nul»«nul» 2:GOTO 220;«nul»«nul»«nul» 3:GOTO 330;«nul»«nul»«nul» 4: GOTO 440;«nul»«nul»«nul» END;«nul»«nul»«nul» 35:CS;WRITELN;«nul»«nul»«nul» 40:«nul»«nul»«nul» CASE FIT OF«nul»«nul»«nul» 1: TOPLINE('Y =A*X^2 + B*C (1. QUADRATIC)');«nul»«nul»«nul» 2: TOPLINE('Y =EXP(A*X^2 +B*X +C) (2. EXPONENTIAL)');«nul»«nul»«nul» 3:TOPLINE ('Y = A*LNX^2 +B*LNX +C) (3. LOGARITHMIC');«nul»«nul»«nul» 4:TOPLINE ('Y =EXP(A*LN^2+B*LNX+C) (4. POWER');«nul»«nul»«nul» END;«nul»«nul»«nul» IF STDEV=0 THEN GOTO 50;«nul»«nul»«nul» WRITE('CALCULATED X,Y-VALUES:');«nul»«nul»«nul» IF SWAP=4 THEN WRITELN('( X,Y SWAPPED!)')«nul»«nul»«nul» ELSE WRITELN;«nul»«nul»«nul» 45:«nul»«nul»«nul» XINP:=U;WRITE('X: ');«nul»«nul»«nul» SAVEOM:=OM;OMODE(0);READ(XINP);«nul»«nul»«nul» IF XINP =U THEN GOTO 50;«nul»«nul»«nul» IF COPY=1 THEN«nul»«nul»«nul» BEGIN OMODE(1); WRITE(XINP:11:6);OMODE(SAVEOM);«nul»«nul»«nul» END;«nul»«nul»«nul» CASE FIT OF«nul»«nul»«nul» 1:(*QUADRATIC:*)«nul»«nul»«nul» YCALC:=A*SQR(XINP)+B*XINP+C;«nul»«nul»«nul» 2:(*EXPONENTIAL:*)«nul»«nul»«nul» YCALC:=EXP(A*SQR(XINP)+B*XINP+C);«nul»«nul»«nul» 3:(*LOGARITHMIC*)«nul»«nul»«nul» YCALC:=A*LN(SQR(XINP))+B*LN(XINP)+C;«nul»«nul»«nul» 4:(*POWER:)«nul»«nul»«nul» YCALC:=EXP(A*LN(SQR(XINP))+B*LN(XINP)+C);«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» WRITELN(' Y: ',YCALC:11:6);«nul»«nul»«nul» GOTO 45;«nul»«nul»«nul» 99:WRITELN;CS;OMODE(0);«nul»«nul»«nul» END.«nul»«nul»«nul» «nul»«nul»«nul» 1: (*Linear:*)«nul»«nul»«nul» YCALC:=A*SQR(XINP)+B*XINP+C;«nul»«nul»«nul» 2:(*Exponential:*)«nul»«nul»«nul» YCALC:=EXP(A*SQR(XINP)+B*XINP+C);«nul»«nul»«nul» 3:(*Logarithmic:*)«nul»«nul»«nul» YCALC:=A*LN(SQR(XINP))+B*LN(XINP)+C;«nul»«nul»«nul» 4: (*Power:*)«nul»«nul»«nul» YCALC:=EXP(A*LN(SQR(XINP))+B*LN(XINP)+C);«nul»«nul»«nul» END;«nul»«nul»«nul» «nul»«nul»«nul» SCREEN(20,0);«nul»«nul»«nul» WRITELN('Y: ',YCALC:14:10);«nul»«nul»«nul» GOTO 40;«nul»«nul»«nul» 99:«nul»«nul»«nul» END.«nul»«nul»«nul» «nul»«nul»«nul» «eof»