IMPLEMENTATION MODULE Math; (* Direct libm bindings (names are valid Modula-2 identifiers and match the C symbols). `fabs` is exposed as `abs`. *) PROCEDURE sqrt(x : REAL) : REAL; EXTERNAL; PROCEDURE exp(x : REAL) : REAL; EXTERNAL; PROCEDURE ln(x : REAL) : REAL; EXTERNAL; PROCEDURE sin(x : REAL) : REAL; EXTERNAL; PROCEDURE cos(x : REAL) : REAL; EXTERNAL; PROCEDURE arctan(x : REAL) : REAL; EXTERNAL; PROCEDURE fabs(x : REAL) : REAL; EXTERNAL; PROCEDURE abs(x : REAL) : REAL; BEGIN RETURN fabs(x) END abs; END Math.