File: INVEST.PS of Tape: Various/Decus/decus-3
(Source file text) 

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.