math.mod 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. IMPLEMENTATION MODULE Math;
  2. (* Direct libm bindings (names are valid Modula-2 identifiers and
  3. match the C symbols). `fabs` is exposed as `abs`. *)
  4. PROCEDURE sqrt(x : REAL) : REAL;
  5. EXTERNAL;
  6. PROCEDURE exp(x : REAL) : REAL;
  7. EXTERNAL;
  8. PROCEDURE ln(x : REAL) : REAL;
  9. EXTERNAL;
  10. PROCEDURE sin(x : REAL) : REAL;
  11. EXTERNAL;
  12. PROCEDURE cos(x : REAL) : REAL;
  13. EXTERNAL;
  14. PROCEDURE tan(x : REAL) : REAL;
  15. EXTERNAL;
  16. PROCEDURE asin(x : REAL) : REAL;
  17. EXTERNAL;
  18. PROCEDURE acos(x : REAL) : REAL;
  19. EXTERNAL;
  20. PROCEDURE arctan(x : REAL) : REAL;
  21. EXTERNAL;
  22. PROCEDURE pow(x, y : REAL) : REAL;
  23. EXTERNAL;
  24. PROCEDURE fabs(x : REAL) : REAL;
  25. EXTERNAL;
  26. PROCEDURE log10(x : REAL) : REAL;
  27. EXTERNAL;
  28. PROCEDURE atan2(y, x : REAL) : REAL;
  29. EXTERNAL;
  30. PROCEDURE sinh(x : REAL) : REAL;
  31. EXTERNAL;
  32. PROCEDURE cosh(x : REAL) : REAL;
  33. EXTERNAL;
  34. PROCEDURE tanh(x : REAL) : REAL;
  35. EXTERNAL;
  36. PROCEDURE hypot(x, y : REAL) : REAL;
  37. EXTERNAL;
  38. PROCEDURE floor(x : REAL) : REAL;
  39. EXTERNAL;
  40. PROCEDURE ceil(x : REAL) : REAL;
  41. EXTERNAL;
  42. PROCEDURE trunc(x : REAL) : REAL;
  43. EXTERNAL;
  44. PROCEDURE round(x : REAL) : REAL;
  45. EXTERNAL;
  46. PROCEDURE fmod(x, y : REAL) : REAL;
  47. EXTERNAL;
  48. PROCEDURE arcsin(x : REAL) : REAL;
  49. BEGIN
  50. RETURN asin(x)
  51. END arcsin;
  52. PROCEDURE arccos(x : REAL) : REAL;
  53. BEGIN
  54. RETURN acos(x)
  55. END arccos;
  56. PROCEDURE power(x, y : REAL) : REAL;
  57. BEGIN
  58. RETURN pow(x, y)
  59. END power;
  60. PROCEDURE abs(x : REAL) : REAL;
  61. BEGIN
  62. RETURN fabs(x)
  63. END abs;
  64. END Math.