MATH.DEF 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * MATH.DEF - Modula-2 interface to MATH.H *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# project("#set tsc='on'") *)
  11. (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on) *)
  12. (*# module(implementation=>off, init_code=>off) *)
  13. (*# name(prefix=>c) *)
  14. DEFINITION MODULE math;
  15. CONST
  16. EDOM = 33; (* Math argument *)
  17. ERANGE = 34; (* Result too large *)
  18. DOMAIN = 1; (* parameter not in valid domain *)
  19. SING = 2; (* function is incalculable at this place *)
  20. OVERFLOW = 3; (* result exceeds representable range *)
  21. UNDERFLOW = 4; (* result too close to zero to be represented *)
  22. TLOSS = 5; (* total loss of precision (eg. Sine (2**65)) *)
  23. PLOSS = 6; (* partial precision loss *)
  24. (* Constants rounded for 18 decimals. *)
  25. MA_E = 2.71828182845904524;
  26. MA_LOG2E = 1.44269504088896341;
  27. MA_LOG10E = 0.434294481903251828;
  28. MA_LN2 = 0.693147180559945309;
  29. MA_LN10 = 2.30258509299404568;
  30. MA_PI = 3.14159265358979324;
  31. MA_PI_2 = 1.57079632679489662;
  32. MA_PI_4 = 0.785398163397448310;
  33. MA_1_PI = 0.318309886183790672;
  34. MA_2_PI = 0.636619772367581343;
  35. MA_1_SQRTPI = 0.564189583547756287;
  36. MA_2_SQRTPI = 1.12837916709551257;
  37. MA_SQRT2 = 1.41421356237309505;
  38. MA_SQRT_2 = 0.707106781186547524;
  39. TYPE
  40. exception = RECORD
  41. type : INTEGER;
  42. name : ARRAY[0..9] OF CHAR;
  43. arg1,
  44. arg2,
  45. retval : LONGREAL;
  46. END;
  47. complex = RECORD (* as used by cabs function *)
  48. x,y : LONGREAL;
  49. END;
  50. VAR
  51. doserrno : INTEGER; (* global DOS error variable *)
  52. errno : INTEGER; (* global error variable *)
  53. (* **** This procedure returns a pointer to an integer *)
  54. PROCEDURE _errno__():ADDRESS;
  55. PROCEDURE abs(x:INTEGER):CARDINAL;
  56. PROCEDURE acos(x:LONGREAL):LONGREAL;
  57. PROCEDURE asin(x:LONGREAL):LONGREAL;
  58. PROCEDURE atan(x:LONGREAL):LONGREAL;
  59. PROCEDURE atan2(y,x:LONGREAL):LONGREAL;
  60. PROCEDURE atof(s:ARRAY OF CHAR):LONGREAL;
  61. PROCEDURE ceil(x:LONGREAL):LONGREAL;
  62. PROCEDURE cos(x:LONGREAL):LONGREAL;
  63. PROCEDURE cosh(x:LONGREAL):LONGREAL;
  64. PROCEDURE exp(x:LONGREAL):LONGREAL;
  65. PROCEDURE fabs(x:LONGREAL):LONGREAL;
  66. PROCEDURE floor(x:LONGREAL):LONGREAL;
  67. PROCEDURE fmod(x,y:LONGREAL):LONGREAL;
  68. PROCEDURE frexp(x:LONGREAL;VAR exp:INTEGER):LONGREAL;
  69. PROCEDURE labs(x:LONGINT):LONGCARD;
  70. PROCEDURE ldexp(x:LONGREAL;exp:INTEGER):LONGREAL;
  71. PROCEDURE log(x:LONGREAL):LONGREAL;
  72. PROCEDURE log10(x:LONGREAL):LONGREAL;
  73. PROCEDURE modf(x:LONGREAL;VAR ipart:LONGREAL):LONGREAL;
  74. PROCEDURE poly(x:LONGREAL;degree:INTEGER;coeffs:ARRAY OF LONGREAL):LONGREAL;
  75. PROCEDURE pow(x,y:LONGREAL):LONGREAL;
  76. PROCEDURE sin(x:LONGREAL):LONGREAL;
  77. PROCEDURE sinh(x:LONGREAL):LONGREAL;
  78. PROCEDURE sqrt(x:LONGREAL):LONGREAL;
  79. PROCEDURE tan(x:LONGREAL):LONGREAL;
  80. PROCEDURE tanh(x:LONGREAL):LONGREAL;
  81. PROCEDURE hypot(x,y:LONGREAL):LONGREAL;
  82. PROCEDURE pow10(p:INTEGER):LONGREAL;
  83. PROCEDURE _fpreset;
  84. TYPE
  85. CharPtr = POINTER TO CHAR;
  86. PROCEDURE acosl(x: TEMPREAL): TEMPREAL;
  87. PROCEDURE asinl(x: TEMPREAL): TEMPREAL;
  88. PROCEDURE atanl(x: TEMPREAL): TEMPREAL;
  89. PROCEDURE atan2l(y: TEMPREAL; x: TEMPREAL): TEMPREAL;
  90. PROCEDURE atofl(s: ADDRESS): TEMPREAL;
  91. PROCEDURE ceill(x: TEMPREAL): TEMPREAL;
  92. PROCEDURE cosl(x: TEMPREAL): TEMPREAL;
  93. PROCEDURE coshl(x: TEMPREAL): TEMPREAL;
  94. PROCEDURE expl(x: TEMPREAL): TEMPREAL;
  95. PROCEDURE fabsl(x: TEMPREAL): TEMPREAL;
  96. PROCEDURE floorl(x: TEMPREAL): TEMPREAL;
  97. PROCEDURE fmodl(x: TEMPREAL; y: TEMPREAL): TEMPREAL;
  98. PROCEDURE frexpl(x: TEMPREAL; VAR exp: CARDINAL): TEMPREAL;
  99. PROCEDURE ldexpl(x: TEMPREAL; exp: CARDINAL): TEMPREAL;
  100. PROCEDURE logl(x: TEMPREAL): TEMPREAL;
  101. PROCEDURE log10l(x: TEMPREAL): TEMPREAL;
  102. PROCEDURE modfl(x: TEMPREAL; VAR ipart: TEMPREAL): TEMPREAL;
  103. PROCEDURE polyl(x: TEMPREAL; degree: CARDINAL; coeffs: ARRAY OF TEMPREAL): TEMPREAL;
  104. PROCEDURE powl(x: TEMPREAL; y: TEMPREAL): TEMPREAL;
  105. PROCEDURE sinl(x: TEMPREAL): TEMPREAL;
  106. PROCEDURE sinhl(x: TEMPREAL): TEMPREAL;
  107. PROCEDURE sqrtl(x: TEMPREAL): TEMPREAL;
  108. PROCEDURE strtodl(s: ARRAY OF CHAR; VAR eptr: CharPtr): TEMPREAL;
  109. PROCEDURE tanl(x: TEMPREAL): TEMPREAL;
  110. PROCEDURE tanhl(x: TEMPREAL): TEMPREAL;
  111. PROCEDURE hypotl(x: TEMPREAL; y: TEMPREAL): TEMPREAL;
  112. END math.