some small fixes and additions
This commit is contained in:
parent
85053cf283
commit
0aea30473c
2 changed files with 21 additions and 14 deletions
|
@ -34,12 +34,18 @@ END exp;
|
||||||
|
|
||||||
PROCEDURE entier(x: REAL): INTEGER;
|
PROCEDURE entier(x: REAL): INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
RETURN TRUNC(x); (* ??? *)
|
IF x < 0.0 THEN
|
||||||
|
RETURN - TRUNC(-x);
|
||||||
|
END;
|
||||||
|
RETURN TRUNC(x);
|
||||||
END entier;
|
END entier;
|
||||||
|
|
||||||
PROCEDURE real(x: INTEGER): REAL;
|
PROCEDURE real(x: INTEGER): REAL;
|
||||||
BEGIN
|
BEGIN
|
||||||
RETURN FLOAT(x); (* ??? *)
|
IF x < 0 THEN
|
||||||
|
RETURN - FLOAT(-x);
|
||||||
|
END;
|
||||||
|
RETURN FLOAT(x);
|
||||||
END real;
|
END real;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
IMPLEMENTATION MODULE Mathlib;
|
IMPLEMENTATION MODULE Mathlib;
|
||||||
|
|
||||||
FROM EM IMPORT FIF, FEF;
|
FROM EM IMPORT FIF, FEF;
|
||||||
|
FROM Traps IMPORT Message;
|
||||||
|
|
||||||
(* From: Handbook of Mathematical Functions
|
(* From: Handbook of Mathematical Functions
|
||||||
Edited by M. Abramowitz and I.A. Stegun
|
Edited by M. Abramowitz and I.A. Stegun
|
||||||
|
@ -49,8 +50,8 @@ IMPLEMENTATION MODULE Mathlib;
|
||||||
BEGIN
|
BEGIN
|
||||||
IF x <= 0.0D THEN
|
IF x <= 0.0D THEN
|
||||||
IF x < 0.0D THEN
|
IF x < 0.0D THEN
|
||||||
(* ??? *)
|
Message("sqrt: negative argument");
|
||||||
;
|
HALT
|
||||||
END;
|
END;
|
||||||
RETURN 0.0D;
|
RETURN 0.0D;
|
||||||
END;
|
END;
|
||||||
|
@ -152,8 +153,8 @@ IMPLEMENTATION MODULE Mathlib;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
IF x <= 0.0D THEN
|
IF x <= 0.0D THEN
|
||||||
(* ??? *)
|
Message("ln: argument <= 0");
|
||||||
RETURN 0.0D;
|
HALT
|
||||||
END;
|
END;
|
||||||
x := FEF(x, exp);
|
x := FEF(x, exp);
|
||||||
WHILE x < 1.0D DO
|
WHILE x < 1.0D DO
|
||||||
|
@ -254,8 +255,8 @@ IMPLEMENTATION MODULE Mathlib;
|
||||||
BEGIN
|
BEGIN
|
||||||
cosinus := longcos(x);
|
cosinus := longcos(x);
|
||||||
IF cosinus = 0.0D THEN
|
IF cosinus = 0.0D THEN
|
||||||
(* ??? *)
|
Message("tan: result does not exist");
|
||||||
RETURN 0.0D;
|
HALT
|
||||||
END;
|
END;
|
||||||
RETURN longsin(x)/cosinus;
|
RETURN longsin(x)/cosinus;
|
||||||
END longtan;
|
END longtan;
|
||||||
|
@ -278,8 +279,8 @@ IMPLEMENTATION MODULE Mathlib;
|
||||||
BEGIN
|
BEGIN
|
||||||
IF x < 0.0D THEN x := -x; END;
|
IF x < 0.0D THEN x := -x; END;
|
||||||
IF x > 1.0D THEN
|
IF x > 1.0D THEN
|
||||||
(* ??? *)
|
Message("arcsin: argument > 1");
|
||||||
RETURN 0.0D;
|
HALT
|
||||||
END;
|
END;
|
||||||
RETURN LONG(halfpi) -
|
RETURN LONG(halfpi) -
|
||||||
longsqrt(1.0D - x)*(a0+x*(a1+x*(a2+x*(a3+x*(a4+x*(a5+x*(a6+x*a7)))))));
|
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;
|
PROCEDURE longarccosh(x: LONGREAL): LONGREAL;
|
||||||
BEGIN
|
BEGIN
|
||||||
IF x < 1.0D THEN
|
IF x < 1.0D THEN
|
||||||
(* ??? *)
|
Message("arccosh: argument < 1");
|
||||||
RETURN 0.0D;
|
HALT
|
||||||
END;
|
END;
|
||||||
RETURN longln(x + longsqrt(x*x - 1.0D));
|
RETURN longln(x + longsqrt(x*x - 1.0D));
|
||||||
END longarccosh;
|
END longarccosh;
|
||||||
|
@ -412,8 +413,8 @@ IMPLEMENTATION MODULE Mathlib;
|
||||||
PROCEDURE longarctanh(x: LONGREAL): LONGREAL;
|
PROCEDURE longarctanh(x: LONGREAL): LONGREAL;
|
||||||
BEGIN
|
BEGIN
|
||||||
IF (x <= -1.0D) OR (x >= 1.0D) THEN
|
IF (x <= -1.0D) OR (x >= 1.0D) THEN
|
||||||
(* ??? *)
|
Message("arctanh: ABS(argument) >= 1");
|
||||||
RETURN 0.0D;
|
HALT
|
||||||
END;
|
END;
|
||||||
RETURN longln((1.0D + x)/(1.0D - x)) / 2.0D;
|
RETURN longln((1.0D + x)/(1.0D - x)) / 2.0D;
|
||||||
END longarctanh;
|
END longarctanh;
|
||||||
|
|
Loading…
Reference in a new issue