PROGRAM INVESTIGATEREPRESENTATION(OUTPUT); VAR BASE, NUMBEROFDIGITS, I : INTEGER; ROUNDING : BOOLEAN; EPSILON : REAL; PROCEDURE ENQUIRY(VAR RADIX,DIGITS: INTEGER; VAR ROUNDS: BOOLEAN); VAR NUMBER, INCREMENT : REAL; BEGIN NUMBER := 2; WHILE ((NUMBER+1) - NUMBER)=1 DO NUMBER := NUMBER*2; INCREMENT := 2; WHILE (NUMBER+INCREMENT)=NUMBER DO INCREMENT := 2*INCREMENT; RADIX := TRUNC((NUMBER+INCREMENT) - NUMBER); ROUNDS := (NUMBER + (RADIX-1))<>NUMBER; DIGITS := 0; NUMBER := 1; WHILE ((NUMBER+1) - NUMBER)=1 DO BEGIN DIGITS := DIGITS +1; NUMBER := NUMBER * RADIX END END (* INQUIRY *); BEGIN ENQUIRY(BASE,NUMBEROFDIGITS,ROUNDING); WRITELN("BASE", BASE:5); WRITELN("NUMBER OF DIGITS", NUMBEROFDIGITS:5); IF ROUNDING THEN WRITELN("ROUNDED") ELSE WRITELN("TRUNCATED"); EPSILON := 1; FOR I := 1 TO NUMBEROFDIGITS DO EPSILON := EPSILON/BASE; IF ROUNDING THEN EPSILON := EPSILON/2; WRITELN("BEST AND WORST PRECISIONS ARE", EPSILON, EPSILON*BASE) END.