home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / oberon / system / moremathl.mod (.txt) < prev    next >
Oberon Text  |  1977-12-31  |  5KB  |  88 lines

  1. Syntax10.Scn.Fnt
  2. ParcElems
  3. Alloc
  4. Syntax24b.Scn.Fnt
  5. Syntax10b.Scn.Fnt
  6. InfoElems
  7. Alloc
  8. Syntax10.Scn.Fnt
  9. StampElems
  10. Alloc
  11. 8 Feb 95
  12. "Title": MoreMathL
  13. "Author": Christoph Steindl (CS)
  14. "Abstract": Implementation of the mathematical functions not exported by MathL. The previously used 
  15.     MathLib shipped with the Metrowerks C-Compiler was slow and inaccurate.
  16. "Keywords": trigonimetric functions, inverse trigonometric functions, hyperbolic functions, inverse
  17.     hyperbolic functions, IEEE floating-point format
  18. "Version": 1.0
  19. "From":  11.11.94 15:40:26
  20. "Until": 
  21. "Changes": 
  22. "Hints": This text can again contain arbitrary text elements!
  23. Syntax10i.Scn.Fnt
  24. FoldElems
  25. (* AMIGA *)
  26. MODULE MoreMathL;    
  27.     (* Christoph Steindl (CS), 11.11.94, AMIGA Ralf Degner (RD) 15.7.95 *)
  28. IMPORT SYSTEM, MathL;
  29. CONST
  30.     piOver2 = MathL.pi / 2;
  31. PROCEDURE -ulr
  32.      04EH, 05EH, 04EH, 075H;     (* ULNK A6; RTS    *)
  33. PROCEDURE -ftan
  34.     0F2H, 02EH, 054H, 00FH, 0000H, 008H;    (* FTAN.D (8, A6), FP0    *)
  35. PROCEDURE -fcot
  36.     (* 1/tan(x)     *)
  37.     0F2H, 000H, 05CH, 032H,    (* FMOVECR.X $ 00000032, FP0     *)
  38.     0F2H, 02EH, 054H, 08FH, 0000H, 008H,    (* FTAN.D (8, A6), FP1     *)
  39.     0F2H, 000H, 004H, 020H;    (* FDIV.X FP1, FP0     *)
  40. PROCEDURE -fasin
  41.     0F2H, 02EH, 054H, 00CH, 0000H, 008H;    (* FASIN.D (8, A6), FP0    *)
  42. PROCEDURE -facos
  43.     0F2H, 02EH, 054H, 01CH, 0000H, 008H;    (* FACOS.D (8, A6), FP0    *)
  44. PROCEDURE -ftanh
  45.     0F2H, 02EH, 054H, 009H, 0000H, 008H;    (* FTANH.D (8, A6), FP0    *)
  46. PROCEDURE -fsinh
  47.     0F2H, 02EH, 054H, 002H, 0000H, 008H;    (* FSINH.D (8, A6), FP0    *)
  48. PROCEDURE -fcosh
  49.     0F2H, 02EH, 054H, 019H, 0000H, 008H;    (* FCOSH.D (8, A6), FP0    *)
  50. PROCEDURE -fatanh
  51.     0F2H, 02EH, 054H, 00DH, 0000H, 008H;    (* FATANH.D (8, A6), FP0    *)
  52. PROCEDURE -facoth
  53.     (* atanh(1/x)     *)
  54.     0F2H, 000H, 05CH, 032H,    (* FMOVECR.X $ 00000032, FP0    *)
  55.     0F2H, 02EH, 054H, 020H, 0000H, 008H,    (* FDIV.D (8, A6), FP0    *)
  56.     0F2H, 000H, 000H, 00DH;    (* FATANH.X FP0, FP0    *)
  57. PROCEDURE tan* (x: LONGREAL): LONGREAL;
  58. BEGIN ftan; ulr END tan;
  59. PROCEDURE cot* (x: LONGREAL): LONGREAL;
  60. BEGIN fcot; ulr END cot;
  61. PROCEDURE arcsin* (x: LONGREAL): LONGREAL;
  62. BEGIN fasin; ulr END arcsin;
  63. PROCEDURE arccot* (x: LONGREAL): LONGREAL;
  64. BEGIN RETURN piOver2 - MathL.arctan(x) END arccot;
  65. PROCEDURE arccos* (x: LONGREAL): LONGREAL;
  66. BEGIN facos; ulr END arccos;
  67. PROCEDURE tanh* (x: LONGREAL): LONGREAL;
  68. BEGIN ftanh; ulr END tanh;
  69. PROCEDURE sinh* (x: LONGREAL): LONGREAL;
  70. BEGIN fsinh; ulr END sinh;
  71. PROCEDURE cosh* (x: LONGREAL): LONGREAL;
  72. BEGIN fcosh; ulr END cosh;
  73. PROCEDURE coth* (x: LONGREAL): LONGREAL;
  74.   VAR e1, e2: LONGREAL;
  75. BEGIN
  76.   e1 := MathL.exp(x); e2 := 1 / e1;
  77.   RETURN (e1 + e2) / (e1 - e2)
  78. END coth;
  79. PROCEDURE arctanh* (x: LONGREAL): LONGREAL;
  80. BEGIN fatanh; ulr END arctanh;
  81. PROCEDURE arcsinh* (x: LONGREAL): LONGREAL;
  82. BEGIN RETURN arctanh(x / MathL.sqrt(1 + x * x)) END arcsinh;
  83. PROCEDURE arcosh* (x: LONGREAL): LONGREAL;
  84. BEGIN RETURN arctanh(MathL.sqrt(x * x - 1) / x) END arcosh;
  85. PROCEDURE arcoth* (x: LONGREAL): LONGREAL;
  86. BEGIN facoth; ulr END arcoth;
  87. END MoreMathL.Mod
  88.