DEFINITION MODULE Mathlib;
(*
  Module:	Mathematical functions
  Author:	Ceriel J.H. Jacobs
  Version:	$Header$
*)

  (* Some mathematical constants: *)

  CONST
	(* From:	Handbook of Mathematical Functions
			Edited by M. Abramowitz and I.A. Stegun
			National Bureau of Standards
			Applied Mathematics Series 55
	*)

	pi	= 3.141592653589793238462643;
	twicepi	= 6.283185307179586476925286;
	halfpi	= 1.570796326794896619231322;
	quartpi	= 0.785398163397448309615661;
	e	= 2.718281828459045235360287;
	ln2	= 0.693147180559945309417232;
	ln10	= 2.302585092994045684017992;

  (* basic functions *)

  PROCEDURE pow(x: REAL; i: INTEGER): REAL;

  PROCEDURE longpow(x: LONGREAL; i: INTEGER): LONGREAL;

  PROCEDURE sqrt(x: REAL): REAL;

  PROCEDURE longsqrt(x: LONGREAL): LONGREAL;

  PROCEDURE exp(x: REAL): REAL;

  PROCEDURE longexp(x: LONGREAL): LONGREAL;

  PROCEDURE ln(x: REAL): REAL;	(* natural log *)

  PROCEDURE longln(x: LONGREAL): LONGREAL;	(* natural log *)

  PROCEDURE log(x: REAL): REAL;	(* log with base 10 *)

  PROCEDURE longlog(x: LONGREAL): LONGREAL;	(* log with base 10 *)

  (* trigonometric functions; arguments in radians *)

  PROCEDURE sin(x: REAL): REAL;

  PROCEDURE longsin(x: LONGREAL): LONGREAL;

  PROCEDURE cos(x: REAL): REAL;

  PROCEDURE longcos(x: LONGREAL): LONGREAL;

  PROCEDURE tan(x: REAL): REAL;

  PROCEDURE longtan(x: LONGREAL): LONGREAL;

  PROCEDURE arcsin(x: REAL): REAL;

  PROCEDURE longarcsin(x: LONGREAL): LONGREAL;

  PROCEDURE arccos(x: REAL): REAL;

  PROCEDURE longarccos(x: LONGREAL): LONGREAL;

  PROCEDURE arctan(x: REAL): REAL;

  PROCEDURE longarctan(x: LONGREAL): LONGREAL;

  (* hyperbolic functions *)

  PROCEDURE sinh(x: REAL): REAL;

  PROCEDURE longsinh(x: LONGREAL): LONGREAL;

  PROCEDURE cosh(x: REAL): REAL;

  PROCEDURE longcosh(x: LONGREAL): LONGREAL;

  PROCEDURE tanh(x: REAL): REAL;

  PROCEDURE longtanh(x: LONGREAL): LONGREAL;

  PROCEDURE arcsinh(x: REAL): REAL;

  PROCEDURE longarcsinh(x: LONGREAL): LONGREAL;

  PROCEDURE arccosh(x: REAL): REAL;

  PROCEDURE longarccosh(x: LONGREAL): LONGREAL;

  PROCEDURE arctanh(x: REAL): REAL;

  PROCEDURE longarctanh(x: LONGREAL): LONGREAL;

  (* conversions *)

  PROCEDURE RadianToDegree(x: REAL): REAL;

  PROCEDURE longRadianToDegree(x: LONGREAL): LONGREAL;

  PROCEDURE DegreeToRadian(x: REAL): REAL;

  PROCEDURE longDegreeToRadian(x: LONGREAL): LONGREAL;

END Mathlib.
