MODULE Reals; (* interface based on Oberon V4 *) IMPORT SYSTEM, CPStrings, CPMath; PROCEDURE Expo*(x: REAL): INTEGER; BEGIN RETURN SHORT(CPMath.Exponent(x)); END Expo; PROCEDURE ExpoL*(x: LONGREAL): INTEGER; BEGIN RETURN SHORT(CPMath.Exponent(x)); END ExpoL; PROCEDURE SetExpo*(e: INTEGER; VAR x: REAL); BEGIN x := SHORT(CPMath.Real(CPMath.Mantissa(x), e)); END SetExpo; PROCEDURE SetExpoL*(e: INTEGER; VAR x: LONGREAL); BEGIN x := CPMath.Real(CPMath.Mantissa(x), e); END SetExpoL; PROCEDURE Ten*(e: INTEGER): REAL; BEGIN RETURN SHORT(CPMath.IntPower(10, e)); END Ten; PROCEDURE TenL*(e: INTEGER): LONGREAL; BEGIN RETURN CPMath.IntPower(10, e); END TenL; PROCEDURE Convert*(x: REAL; n: INTEGER; VAR d: ARRAY OF CHAR); BEGIN CPStrings.RealToStringForm(x, n, 0, 3, "0", d); END Convert; PROCEDURE ConvertL*(x: LONGREAL; n: INTEGER; VAR d: ARRAY OF CHAR); BEGIN CPStrings.RealToStringForm(x, n, 0, 3, "0", d); END ConvertL; PROCEDURE ConvertH*(x: REAL; VAR d: ARRAY OF CHAR); BEGIN CPStrings.IntToStringForm(SYSTEM.VAL(LONGINT, x), CPStrings.hexadecimal, 0, "0", FALSE, d); END ConvertH; PROCEDURE ConvertHL*(x: LONGREAL; VAR d: ARRAY OF CHAR); BEGIN CPStrings.IntToStringForm(SYSTEM.VAL(HUGEINT, x), CPStrings.hexadecimal, 0, "0", FALSE, d); END ConvertHL; END Reals.