A large commit.
[pdp8.git] / sw / src / pascal / INVEST.PS
CommitLineData
81e70d48
PH
1PROGRAM INVESTIGATEREPRESENTATION(OUTPUT);
2
3 VAR BASE,
4 NUMBEROFDIGITS,
5 I : INTEGER;
6 ROUNDING : BOOLEAN;
7 EPSILON : REAL;
8
9
10
11 PROCEDURE ENQUIRY(VAR RADIX,DIGITS: INTEGER; VAR ROUNDS: BOOLEAN);
12
13 VAR NUMBER,
14 INCREMENT : REAL;
15 BEGIN
16 NUMBER := 2;
17 WHILE ((NUMBER+1) - NUMBER)=1 DO NUMBER := NUMBER*2;
18 INCREMENT := 2;
19 WHILE (NUMBER+INCREMENT)=NUMBER DO INCREMENT := 2*INCREMENT;
20 RADIX := TRUNC((NUMBER+INCREMENT) - NUMBER);
21 ROUNDS := (NUMBER + (RADIX-1))<>NUMBER;
22 DIGITS := 0;
23 NUMBER := 1;
24 WHILE ((NUMBER+1) - NUMBER)=1 DO
25 BEGIN DIGITS := DIGITS +1;
26 NUMBER := NUMBER * RADIX
27 END
28 END (* INQUIRY *);
29
30
31
32BEGIN
33 ENQUIRY(BASE,NUMBEROFDIGITS,ROUNDING);
34 WRITELN("BASE", BASE:5);
35 WRITELN("NUMBER OF DIGITS", NUMBEROFDIGITS:5);
36 IF ROUNDING
37 THEN WRITELN("ROUNDED")
38 ELSE WRITELN("TRUNCATED");
39 EPSILON := 1;
40 FOR I := 1 TO NUMBEROFDIGITS DO EPSILON := EPSILON/BASE;
41 IF ROUNDING THEN EPSILON := EPSILON/2;
42 WRITELN("BEST AND WORST PRECISIONS ARE",
43 EPSILON, EPSILON*BASE)
44END.