| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- (* Release 3.10 *)
- (*-------------------------------------------------------------------------*
- * *
- * MATHLIB.DEF - Modula-2 MATH library *
- * *
- * COPYRIGHT (C) 1987..1992 Clarion Software Corporation. *
- * All Rights Reserved *
- * *
- *--------------------------------------------------------------------------*)
- (*# call(o_a_copy => on,
- o_a_size => on) *)
- (*%F _fdata *)
- (*# call(seg_name => null) *)
- (*# data(seg_name => null) *)
- (*%E *)
- (*# module(implementation=>off,init_code=>off) *)
- DEFINITION MODULE MATHLIB;
- IMPORT SYSTEM, CoreMath, Lib;
- (* Implemented in Core Library
- PROCEDURE Sin (A : LONGREAL) : LONGREAL;
- PROCEDURE Cos (A : LONGREAL) : LONGREAL;
- PROCEDURE Tan (A : LONGREAL) : LONGREAL;
- PROCEDURE SinH(A : LONGREAL) : LONGREAL;
- PROCEDURE CosH(A : LONGREAL) : LONGREAL;
- PROCEDURE TanH(A : LONGREAL) : LONGREAL;
- PROCEDURE ASin(A : LONGREAL) : LONGREAL;
- PROCEDURE ACos(A : LONGREAL) : LONGREAL;
- PROCEDURE ATan(A : LONGREAL) : LONGREAL;
- PROCEDURE Exp (A : LONGREAL) : LONGREAL;
- PROCEDURE Log (A : LONGREAL) : LONGREAL;
- PROCEDURE Log10(A : LONGREAL) : LONGREAL;
- PROCEDURE Pow(X,Y : LONGREAL) : LONGREAL;
- PROCEDURE Mod(X,Y : LONGREAL) : LONGREAL;
- PROCEDURE Sqrt(A : LONGREAL) : LONGREAL;
- *)
- PROCEDURE Rexp(VAR I : INTEGER;A : LONGREAL) : LONGREAL;
- PROCEDURE ATan2(X,Y : LONGREAL) : LONGREAL;
- CONST
- Sin = CoreMath.sin;
- Cos = CoreMath.cos;
- Tan = CoreMath.tan;
- SinH = CoreMath.sinh;
- CosH = CoreMath.cosh;
- TanH = CoreMath.tanh;
- ASin = CoreMath.asin;
- ACos = CoreMath.acos;
- ATan = CoreMath.atan;
- Exp = CoreMath.exp;
- Log = CoreMath.log;
- Log10 = CoreMath.log10;
- Pow = CoreMath.pow;
- Mod = CoreMath.fmod;
- Sqrt = CoreMath.sqrt;
- (* 8087 instructions *)
- TYPE
- PackedBcd = ARRAY[0..9] OF SHORTCARD;
- Environment = RECORD
- ControlWord : BITSET;
- StatusWord : BITSET;
- TagWord : BITSET;
- IP : CARDINAL;
- Opcode : CARDINAL;
- DataPointer : CARDINAL;
- R80287 : CARDINAL;
- END;
- PROCEDURE LongToBcd(A: LONGREAL) : PackedBcd;
- PROCEDURE BcdToLong(A: PackedBcd) : LONGREAL;
- PROCEDURE IntPow(X:LONGREAL;K:INTEGER):LONGREAL;
- (*# save *)
- (*# call(reg_param => (ax,bx,cx,dx,st0), reg_saved => (ds,si,di,st1,st2)) *)
- PROCEDURE LoadControlWord(C : BITSET);
- PROCEDURE StoreControlWord() : BITSET;
- PROCEDURE ClearExceptions();
- PROCEDURE StoreEnvironment(VAR En: Environment);
- (*# restore *)
- (* end of 8087 instructions *)
- (*
- TYPE
- StrPtr = POINTER TO ARRAY [0..15] OF CHAR;
- Exception = RECORD
- type: CARDINAL;
- Name: StrPtr;
- arg1, arg2, retval: LONGREAL;
- END;
- VAR
- MathError : PROCEDURE (VAR E: Exception): INTEGER;
- *)
- (* Values for error type parameter to MathError procedure *)
- CONST
- DOMAIN = 1; (* parameter not in valid domain *)
- SING = 2; (* function is incalculable at this place *)
- OVERFLOW = 3; (* result exceeds representable range *)
- UNDERFLOW = 4; (* result too close to zero to be represented *)
- TLOSS = 5; (* total loss of precision (eg. Sine (2**65)) *)
- PLOSS = 6; (* partial precision loss *)
- (* Math Constants *)
- CONST
- M_E = 2.718281828459045240; (* e *)
- M_Log2E = 1.442695040888963410; (* log2 of e *)
- M_Log10E = 0.434294481903251828; (* log10 of e *)
- M_Ln2 = 0.693147180559945309; (* log2 of 2 *)
- M_Ln10 = 2.302585092994045680; (* log2 of 10 *)
- M_Pi = 3.141592653589793240; (* Pi *)
- M_PiBy2 = 1.570796326794896620; (* Pi/2 *)
- M_PiBy4 = 0.785398163397448310; (* Pi/4 *)
- M_1ByPy = 0.318309886183790672; (* 1/Pi *)
- M_2ByPy = 0.636619772367581343; (* 2/Pi *)
- M_1BySqrtPi = 0.564189583547756287; (* 1/sqrt(Pi) *)
- M_2BySqrtPi = 1.128379167095512570; (* 2/sqrt(Pi) *)
- M_Sqrt2 = 1.414213562373095050; (* Sqrt(2) *)
- M_Sqrt2By2 = 0.707106781186547524; (* Sqrt(2)/2 *)
- CONST
- Exception ::= CoreMath.Exception;
- StrPtr ::= CoreMath.StrPtr;
- MathError ::= CoreMath.matherr;
- END MATHLIB.
|