MATHLIB.LST 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. Listing:
  2. 1 (* Release 3.10 *)
  3. 2 (*-------------------------------------------------------------------------*
  4. 3 * *
  5. 4 * MATHLIB.DEF - Modula-2 MATH library *
  6. 5 * *
  7. 6 * COPYRIGHT (C) 1987..1992 Clarion Software Corporation. *
  8. 7 * All Rights Reserved *
  9. 8 * *
  10. 9 *--------------------------------------------------------------------------*)
  11. 10
  12. 11 (*# call(o_a_copy => on,
  13. 12 o_a_size => on) *)
  14. 13 (*%F _fdata *)
  15. 14 (*# call(seg_name => null) *)
  16. 15 (*# data(seg_name => null) *)
  17. 16 (*%E *)
  18. 17 (*# module(implementation=>off,init_code=>off) *)
  19. 18
  20. 19 DEFINITION MODULE MATHLIB;
  21. 20
  22. 21 IMPORT SYSTEM, CoreMath, Lib;
  23. 22
  24. 23 (* Implemented in Core Library
  25. 24
  26. 25 PROCEDURE Sin (A : LONGREAL) : LONGREAL;
  27. 26 PROCEDURE Cos (A : LONGREAL) : LONGREAL;
  28. 27 PROCEDURE Tan (A : LONGREAL) : LONGREAL;
  29. 28 PROCEDURE SinH(A : LONGREAL) : LONGREAL;
  30. 29 PROCEDURE CosH(A : LONGREAL) : LONGREAL;
  31. 30 PROCEDURE TanH(A : LONGREAL) : LONGREAL;
  32. 31 PROCEDURE ASin(A : LONGREAL) : LONGREAL;
  33. 32 PROCEDURE ACos(A : LONGREAL) : LONGREAL;
  34. 33 PROCEDURE ATan(A : LONGREAL) : LONGREAL;
  35. 34
  36. 35 PROCEDURE Exp (A : LONGREAL) : LONGREAL;
  37. 36 PROCEDURE Log (A : LONGREAL) : LONGREAL;
  38. 37 PROCEDURE Log10(A : LONGREAL) : LONGREAL;
  39. 38 PROCEDURE Pow(X,Y : LONGREAL) : LONGREAL;
  40. 39
  41. 40 PROCEDURE Mod(X,Y : LONGREAL) : LONGREAL;
  42. 41 PROCEDURE Sqrt(A : LONGREAL) : LONGREAL;
  43. 42
  44. 43 *)
  45. 44 PROCEDURE Rexp(VAR I : INTEGER;A : LONGREAL) : LONGREAL;
  46. 45 PROCEDURE ATan2(X,Y : LONGREAL) : LONGREAL;
  47. 46
  48. 47 CONST
  49. 48 Sin = CoreMath.sin;
  50. ***** ^ not supported yet
  51. ***** ^ not supported yet
  52. 49 Cos = CoreMath.cos;
  53. ***** ^ not supported yet
  54. ***** ^ not supported yet
  55. 50 Tan = CoreMath.tan;
  56. ***** ^ not supported yet
  57. ***** ^ not supported yet
  58. 51 SinH = CoreMath.sinh;
  59. ***** ^ not supported yet
  60. ***** ^ not supported yet
  61. 52 CosH = CoreMath.cosh;
  62. ***** ^ not supported yet
  63. ***** ^ not supported yet
  64. 53 TanH = CoreMath.tanh;
  65. ***** ^ not supported yet
  66. ***** ^ not supported yet
  67. 54 ASin = CoreMath.asin;
  68. ***** ^ not supported yet
  69. ***** ^ not supported yet
  70. 55 ACos = CoreMath.acos;
  71. ***** ^ not supported yet
  72. ***** ^ not supported yet
  73. 56 ATan = CoreMath.atan;
  74. ***** ^ not supported yet
  75. ***** ^ not supported yet
  76. 57
  77. 58 Exp = CoreMath.exp;
  78. ***** ^ not supported yet
  79. ***** ^ not supported yet
  80. 59 Log = CoreMath.log;
  81. ***** ^ not supported yet
  82. ***** ^ not supported yet
  83. 60 Log10 = CoreMath.log10;
  84. ***** ^ not supported yet
  85. ***** ^ not supported yet
  86. 61 Pow = CoreMath.pow;
  87. ***** ^ not supported yet
  88. ***** ^ not supported yet
  89. 62
  90. 63 Mod = CoreMath.fmod;
  91. ***** ^ not supported yet
  92. ***** ^ not supported yet
  93. 64 Sqrt = CoreMath.sqrt;
  94. ***** ^ not supported yet
  95. ***** ^ not supported yet
  96. 65
  97. 66 (* 8087 instructions *)
  98. 67 TYPE
  99. 68 PackedBcd = ARRAY[0..9] OF SHORTCARD;
  100. ***** ^ not supported yet
  101. ***** ^ not supported yet
  102. 69 Environment = RECORD
  103. 70 ControlWord : BITSET;
  104. ***** ^ undeclared identifier
  105. 71 StatusWord : BITSET;
  106. ***** ^ undeclared identifier
  107. 72 TagWord : BITSET;
  108. ***** ^ undeclared identifier
  109. 73 IP : CARDINAL;
  110. 74 Opcode : CARDINAL;
  111. 75 DataPointer : CARDINAL;
  112. 76 R80287 : CARDINAL;
  113. 77 END;
  114. ***** ^ not supported yet
  115. 78
  116. 79 PROCEDURE LongToBcd(A: LONGREAL) : PackedBcd;
  117. 80 PROCEDURE BcdToLong(A: PackedBcd) : LONGREAL;
  118. 81 PROCEDURE IntPow(X:LONGREAL;K:INTEGER):LONGREAL;
  119. 82
  120. 83
  121. 84 (*# save *)
  122. 85 (*# call(reg_param => (ax,bx,cx,dx,st0), reg_saved => (ds,si,di,st1,st2)) *)
  123. 86 PROCEDURE LoadControlWord(C : BITSET);
  124. ***** ^ undeclared identifier
  125. 87 PROCEDURE StoreControlWord() : BITSET;
  126. ***** ^ undeclared identifier
  127. 88 PROCEDURE ClearExceptions();
  128. 89 PROCEDURE StoreEnvironment(VAR En: Environment);
  129. 90 (*# restore *)
  130. 91
  131. 92 (* end of 8087 instructions *)
  132. 93
  133. 94 (*
  134. 95 TYPE
  135. 96 StrPtr = POINTER TO ARRAY [0..15] OF CHAR;
  136. 97 Exception = RECORD
  137. 98 type: CARDINAL;
  138. 99 Name: StrPtr;
  139. 100 arg1, arg2, retval: LONGREAL;
  140. 101 END;
  141. 102 VAR
  142. 103 MathError : PROCEDURE (VAR E: Exception): INTEGER;
  143. 104 *)
  144. 105
  145. 106 (* Values for error type parameter to MathError procedure *)
  146. 107
  147. 108 CONST
  148. 109 DOMAIN = 1; (* parameter not in valid domain *)
  149. 110 SING = 2; (* function is incalculable at this place *)
  150. 111 OVERFLOW = 3; (* result exceeds representable range *)
  151. 112 UNDERFLOW = 4; (* result too close to zero to be represented *)
  152. 113 TLOSS = 5; (* total loss of precision (eg. Sine (2**65)) *)
  153. 114 PLOSS = 6; (* partial precision loss *)
  154. 115
  155. 116 (* Math Constants *)
  156. 117
  157. 118 CONST
  158. 119 M_E = 2.718281828459045240; (* e *)
  159. 120 M_Log2E = 1.442695040888963410; (* log2 of e *)
  160. 121 M_Log10E = 0.434294481903251828; (* log10 of e *)
  161. 122 M_Ln2 = 0.693147180559945309; (* log2 of 2 *)
  162. 123 M_Ln10 = 2.302585092994045680; (* log2 of 10 *)
  163. 124 M_Pi = 3.141592653589793240; (* Pi *)
  164. 125 M_PiBy2 = 1.570796326794896620; (* Pi/2 *)
  165. 126 M_PiBy4 = 0.785398163397448310; (* Pi/4 *)
  166. 127 M_1ByPy = 0.318309886183790672; (* 1/Pi *)
  167. 128 M_2ByPy = 0.636619772367581343; (* 2/Pi *)
  168. 129 M_1BySqrtPi = 0.564189583547756287; (* 1/sqrt(Pi) *)
  169. 130 M_2BySqrtPi = 1.128379167095512570; (* 2/sqrt(Pi) *)
  170. 131 M_Sqrt2 = 1.414213562373095050; (* Sqrt(2) *)
  171. 132 M_Sqrt2By2 = 0.707106781186547524; (* Sqrt(2)/2 *)
  172. 133
  173. 134
  174. 135
  175. 136 CONST
  176. 137 Exception ::= CoreMath.Exception;
  177. ***** ^ not supported yet
  178. ***** ^ not supported yet
  179. 138 StrPtr ::= CoreMath.StrPtr;
  180. ***** ^ not supported yet
  181. ***** ^ not supported yet
  182. 139 MathError ::= CoreMath.matherr;
  183. ***** ^ not supported yet
  184. ***** ^ not supported yet
  185. 140
  186. 141 END MATHLIB.
  187. ***** ^ not supported yet
  188. 45 errors