Modules/Math

From vishap oberon compiler
Revision as of 13:54, 24 February 2016 by Noch (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Deutsch (de) | English (en) | հայերեն (hy)


Module Math and MathL

The module Math provides a basic set of general purpose functions using REAL arithmetic. The module MathL provides the same functions for LONGREAL arithmetic.

Interface

DEFINITION Math;
   CONST
      pi = 3.14159265358979323846;
       e = 2.71828182845904523536;
   PROCEDURE   sqrt (x : REAL) : REAL;
   PROCEDURE  power (x,base : REAL) : REAL;
   PROCEDURE    exp (x : REAL): REAL;
   PROCEDURE     ln (x : REAL) : REAL;  
   PROCEDURE    log (x,base : REAL) : REAL;		 
   PROCEDURE  round (x : REAL) : REAL;
   PROCEDURE    sin (x : REAL) : REAL;
   PROCEDURE    cos (x : REAL) : REAL
   PROCEDURE    tan (x : REAL) : REAL;
   PROCEDURE arcsin (x : REAL) : REAL;
   PROCEDURE arccos (x : REAL) : REAL;
   PROCEDURE arctan (x : REAL) : REAL;
   PROCEDURE arctan2(x,y : REAL): REAL
   PROCEDURE sinh   (x:REAL):REAL;
   PROCEDURE cosh   (x:REAL):REAL;
   PROCEDURE tanh   (x:REAL):REAL;
   PROCEDURE arcsinh(x:REAL):REAL;
   PROCEDURE arccosh(x:REAL):REAL;
   PROCEDURE arctanh(x:REAL):REAL;
END Math.

Operations

  • sqrt (x) returns the square root of x, where x must be positive
  • sin, cos, tan (x) returns the sine, cosine or tangent value of x, where x is in radians
  • arcsin, arcos, arctan (x) returns the arcsine, arcos, arctan value in radians of x, where x is in the sine, cosine or tangent value
  • power(x, base) returns the x to the power base
  • round(x) if 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 or LONGREAL format.
  • ln(x) returns the natural logarithm (base e) of x
  • exp(x) is the exponential of x base e. x must not be so small that this exponential underflows nor so large that it overflows.
  • log(x,base) is the logarithm of x base b. All positive arguments are allowed. The base b must be positive.
  • arctan2(xn,xd) is the quadrant-correct arc tangent atan(xn/xd). If the denominator xd is zero, then the numerator xn must not be zero. All arguments are legal except xn = xd = 0.
  • sinh(x) is the hyperbolic sine of x. The argument x must not be so large that exp(|x|) overflows.
  • cosh(x) is the hyperbolic cosine of x. The argument x must not be so large that exp(|x|) overflows.
  • tanh(x) is the hyperbolic tangent of x. All arguments are legal.
  • arcsinh(x) is the arc hyperbolic sine of x. All arguments are legal.
  • arccosh(x) is the arc hyperbolic cosine of x. All arguments greater than or equal to 1 are legal.
  • arctanh(x) is the arc hyperbolic tangent of x.

|x| < 1 - sqrt(em), where em is machine epsilon.

Note that |x| must not be so close to 1 that the result is less accurate than half precision.

Source

Based on the original ETH Math module, with additions from BK and Al Freed, NASA.

This article was created by using Oakwood Guidelines as a source.