1 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.