some small fixes and additions

This commit is contained in:
ceriel 1987-07-22 12:42:10 +00:00
parent 85053cf283
commit 0aea30473c
2 changed files with 21 additions and 14 deletions

View file

@ -34,12 +34,18 @@ END exp;
PROCEDURE entier(x: REAL): INTEGER;
BEGIN
RETURN TRUNC(x); (* ??? *)
IF x < 0.0 THEN
RETURN - TRUNC(-x);
END;
RETURN TRUNC(x);
END entier;
PROCEDURE real(x: INTEGER): REAL;
BEGIN
RETURN FLOAT(x); (* ??? *)
IF x < 0 THEN
RETURN - FLOAT(-x);
END;
RETURN FLOAT(x);
END real;
BEGIN

View file

@ -1,6 +1,7 @@
IMPLEMENTATION MODULE Mathlib;
FROM EM IMPORT FIF, FEF;
FROM Traps IMPORT Message;
(* From: Handbook of Mathematical Functions
Edited by M. Abramowitz and I.A. Stegun
@ -49,8 +50,8 @@ IMPLEMENTATION MODULE Mathlib;
BEGIN
IF x <= 0.0D THEN
IF x < 0.0D THEN
(* ??? *)
;
Message("sqrt: negative argument");
HALT
END;
RETURN 0.0D;
END;
@ -152,8 +153,8 @@ IMPLEMENTATION MODULE Mathlib;
BEGIN
IF x <= 0.0D THEN
(* ??? *)
RETURN 0.0D;
Message("ln: argument <= 0");
HALT
END;
x := FEF(x, exp);
WHILE x < 1.0D DO
@ -254,8 +255,8 @@ IMPLEMENTATION MODULE Mathlib;
BEGIN
cosinus := longcos(x);
IF cosinus = 0.0D THEN
(* ??? *)
RETURN 0.0D;
Message("tan: result does not exist");
HALT
END;
RETURN longsin(x)/cosinus;
END longtan;
@ -278,8 +279,8 @@ IMPLEMENTATION MODULE Mathlib;
BEGIN
IF x < 0.0D THEN x := -x; END;
IF x > 1.0D THEN
(* ??? *)
RETURN 0.0D;
Message("arcsin: argument > 1");
HALT
END;
RETURN LONG(halfpi) -
longsqrt(1.0D - x)*(a0+x*(a1+x*(a2+x*(a3+x*(a4+x*(a5+x*(a6+x*a7)))))));
@ -398,8 +399,8 @@ IMPLEMENTATION MODULE Mathlib;
PROCEDURE longarccosh(x: LONGREAL): LONGREAL;
BEGIN
IF x < 1.0D THEN
(* ??? *)
RETURN 0.0D;
Message("arccosh: argument < 1");
HALT
END;
RETURN longln(x + longsqrt(x*x - 1.0D));
END longarccosh;
@ -412,8 +413,8 @@ IMPLEMENTATION MODULE Mathlib;
PROCEDURE longarctanh(x: LONGREAL): LONGREAL;
BEGIN
IF (x <= -1.0D) OR (x >= 1.0D) THEN
(* ??? *)
RETURN 0.0D;
Message("arctanh: ABS(argument) >= 1");
HALT
END;
RETURN longln((1.0D + x)/(1.0D - x)) / 2.0D;
END longarctanh;