<> <> <> DIRECTORY IPReal USING [], Real USING [Fix, RealException]; IPRealImpl: CEDAR PROGRAM IMPORTS Real EXPORTS IPReal = BEGIN Fix: PRIVATE PROC[r: REAL] RETURNS[INT] = { RETURN[Real.Fix[r]] }; < GOTO Fail];>> Floor: PUBLIC PROC[a: REAL] RETURNS[c: REAL] = { c _ Fix[a ! Real.RealException => { c _ a; CONTINUE }]; IF c>a THEN RETURN[c-1] ELSE RETURN[c] }; Ceiling: PUBLIC PROC[a: REAL] RETURNS[c: REAL] = { c _ Fix[a ! Real.RealException => { c _ a; CONTINUE }]; IF c { c _ a; CONTINUE }]; RETURN[c] }; Round: PUBLIC PROC[a: REAL] RETURNS[c: REAL] = { RETURN[Floor[a + 0.5]] }; Mod: PUBLIC PROC[a, b: REAL] RETURNS[REAL] = { RETURN[a - b*Floor[a/b]] }; Rem: PUBLIC PROC[a, b: REAL] RETURNS[REAL] = { RETURN[a - b*Trunc[a/b]] }; END.