IMPLEMENTATION MODULE LongMath; IMPORT Math; PROCEDURE sqrt (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.sqrt(x) END sqrt; PROCEDURE exp (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.exp(x) END exp; PROCEDURE ln (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.ln(x) END ln; PROCEDURE sin (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.sin(x) END sin; PROCEDURE cos (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.cos(x) END cos; PROCEDURE tan (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.tan(x) END tan; PROCEDURE arcsin (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.arcsin(x) END arcsin; PROCEDURE arccos (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.arccos(x) END arccos; PROCEDURE arctan (x : LONGREAL) : LONGREAL; BEGIN RETURN Math.arctan(x) END arctan; PROCEDURE power (base, exponent : LONGREAL) : LONGREAL; BEGIN RETURN Math.power(base, exponent) END power; PROCEDURE round (x : LONGREAL) : INTEGER; (* nearest integer, halves away from zero *) BEGIN IF x >= 0.0 THEN RETURN VAL(INTEGER, Math.floor(x + 0.5)) ELSE RETURN VAL(INTEGER, Math.ceil(x - 0.5)) END END round; PROCEDURE IsRMathException () : BOOLEAN; BEGIN RETURN FALSE END IsRMathException; END LongMath.