Library basic

```DEFINITION Math;
(*General purpose mathematical functions

Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Compiler Developers".*)

CONST
pi = 3.14159265358979;
e = 2.71828182845905;

PROCEDURE sqrt(x: REAL): REAL;
(*returns the square root of x, where x must be positive*)

PROCEDURE power(base, exp: REAL): REAL;
(*returns base raised to exp*)

PROCEDURE exp(x: REAL): REAL;
(*returns the constant e raised to x*)

PROCEDURE ln(x: REAL): REAL;
(*returns the natural logarithm of x with base e*)

PROCEDURE log(x, base: REAL): REAL;
(*log(x, b) returns the logarithm of x with base b*)

PROCEDURE round(x: REAL): REAL;
(*returns x rounded to the nearest integer. If the fraction part of x is in range 0.0 to 0.5 then the result is the largest integer not greater than x, otherwise the result is x rounded up to the next highest whole number. Note that integer values cannot always be exactly represented in REAL format.*)

PROCEDURE sin(x: REAL): REAL;
(*returns the sine of a radian value x*)

PROCEDURE cos(x: REAL): REAL;
(*returns the cosine of a radian value x*)

PROCEDURE tan(x: REAL): REAL;
(*returns the tangent of a radian value x*)

PROCEDURE arcsin(x: REAL): REAL;
(*returns the inverse sine of x in radians, where -1 <= x <= 1*)

PROCEDURE arccos(x: REAL): REAL;
(*returns the inverse cosine of x in radians, where -1 <= x <= 1*)

PROCEDURE arctan(x: REAL): REAL;
(*returns the inverse tangent of x in radians, where -1 <= x <= 1*)

PROCEDURE arctan2(y, x: REAL): REAL;
(*returns the inverse tangent in radians of y/x based on the signs of both values to determine the correct quadrant.*)

PROCEDURE sinh(x: REAL): REAL;
(*returns the hyperbolic sine of x*)

PROCEDURE cosh(x: REAL): REAL;
(*returns the hyperbolic cosine of x*)

PROCEDURE tanh(x: REAL): REAL;
(*returns the hyperbolic tangent of x*)

PROCEDURE arcsinh(x: REAL): REAL;
(*returns the inverse hyperbolic sine of x*)

PROCEDURE arccosh(x: REAL): REAL;
(*returns the inverse hyperbolic cosine of x*)

PROCEDURE arctanh(x: REAL): REAL;
(*returns the inverse hyperbolic tangent of x*)

END Math.
```