DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦ac6499141⟧ TextFile

    Length: 14208 (0x3780)
    Types: TextFile
    Names: »KUFI.PAS«

Derivation

└─⟦692ac107c⟧ Bits:30005923 PolyPascal-80 V3.10 arbejdsdiskette 1
    └─ ⟦this⟧ »KUFI.PAS« 

TextFile

«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»