8 PROCEDURE [code
] IncludeMATH
"#include <math.h>";
9 PROCEDURE [code
] M_PI (): SHORTREAL
"M_PI";
10 PROCEDURE [code
] sqrtf (x
: SHORTREAL
): SHORTREAL
"sqrtf(x)";
11 PROCEDURE [code
] expf (x
: SHORTREAL
): SHORTREAL
"expf(x)";
12 PROCEDURE [code
] logf (x
: SHORTREAL
): SHORTREAL
"logf(x)";
13 PROCEDURE [code
] log10f (x
: SHORTREAL
): SHORTREAL
"log10f(x)";
14 PROCEDURE [code
] powf (x
, y
: SHORTREAL
): SHORTREAL
"powf(x, y)";
15 PROCEDURE [code
] sinf (x
: SHORTREAL
): SHORTREAL
"sinf(x)";
16 PROCEDURE [code
] cosf (x
: SHORTREAL
): SHORTREAL
"cosf(x)";
17 PROCEDURE [code
] tanf (x
: SHORTREAL
): SHORTREAL
"tanf(x)";
18 PROCEDURE [code
] asinf (x
: SHORTREAL
): SHORTREAL
"asinf(x)";
19 PROCEDURE [code
] acosf (x
: SHORTREAL
): SHORTREAL
"acosf(x)";
20 PROCEDURE [code
] atanf (x
: SHORTREAL
): SHORTREAL
"atanf(x)";
21 PROCEDURE [code
] atan2f (y
, x
: SHORTREAL
): SHORTREAL
"atan2f(y, x)";
22 PROCEDURE [code
] sinhf (x
: SHORTREAL
): SHORTREAL
"sinhf(x)";
23 PROCEDURE [code
] coshf (x
: SHORTREAL
): SHORTREAL
"coshf(x)";
24 PROCEDURE [code
] tanhf (x
: SHORTREAL
): SHORTREAL
"tanhf(x)";
25 PROCEDURE [code
] asinhf (x
: SHORTREAL
): SHORTREAL
"asinhf(x)";
26 PROCEDURE [code
] acoshf (x
: SHORTREAL
): SHORTREAL
"acoshf(x)";
27 PROCEDURE [code
] atanhf (x
: SHORTREAL
): SHORTREAL
"atanhf(x)";
28 PROCEDURE [code
] floorf (x
: SHORTREAL
): SHORTREAL
"floorf(x)";
29 PROCEDURE [code
] ceilf (x
: SHORTREAL
): SHORTREAL
"ceilf(x)";
30 PROCEDURE [code
] roundf (x
: SHORTREAL
): SHORTREAL
"roundf(x)";
31 PROCEDURE [code
] truncf (x
: SHORTREAL
): SHORTREAL
"truncf(x)";
32 PROCEDURE [code
] copysignf (x
, y
: SHORTREAL
): SHORTREAL
"copysignf(x, y)";
33 PROCEDURE [code
] frexpf (x
: SHORTREAL
; OUT exp
: INTEGER): SHORTREAL
"frexpf(x, exp)";
34 PROCEDURE [code
] ldexpf (x
: SHORTREAL
; exp
: INTEGER): SHORTREAL
"ldexpf(x, exp)";
36 PROCEDURE Pi
* (): SHORTREAL
;
41 PROCEDURE Eps
* (): SHORTREAL
;
46 PROCEDURE Sqrt
* (x
: SHORTREAL
): SHORTREAL
;
51 PROCEDURE Exp
* (x
: SHORTREAL
): SHORTREAL
;
56 PROCEDURE Ln
* (x
: SHORTREAL
): SHORTREAL
;
61 PROCEDURE Log
* (x
: SHORTREAL
): SHORTREAL
;
66 PROCEDURE Power
* (x
, y
: SHORTREAL
): SHORTREAL
;
71 PROCEDURE IntPower
* (x
: SHORTREAL
; n
: INTEGER): SHORTREAL
;
74 IF n
= MIN(INTEGER) THEN RETURN IntPower(x
, n
+ 1) / x
END;
76 IF n
< 0 THEN x
:= 1.0 / x
; n
:= -n
END;
78 IF ODD(n
) THEN y
:= y
* x
; DEC(n
)
79 ELSE x
:= x
* x
; n
:= n
DIV 2
85 PROCEDURE Sin
* (x
: SHORTREAL
): SHORTREAL
;
90 PROCEDURE Cos
* (x
: SHORTREAL
): SHORTREAL
;
95 PROCEDURE Tan
* (x
: SHORTREAL
): SHORTREAL
;
100 PROCEDURE SinCos
* (x
: SHORTREAL
; OUT s
, c
: SHORTREAL
);
102 s
:= sinf(x
); c
:= cosf(x
)
105 PROCEDURE ArcSin
* (x
: SHORTREAL
): SHORTREAL
;
110 PROCEDURE ArcCos
* (x
: SHORTREAL
): SHORTREAL
;
115 PROCEDURE ArcTan
* (x
: SHORTREAL
): SHORTREAL
;
120 PROCEDURE ArcTan2
* (y
, x
: SHORTREAL
): SHORTREAL
;
125 PROCEDURE Sinh
* (x
: SHORTREAL
): SHORTREAL
;
130 PROCEDURE Cosh
* (x
: SHORTREAL
): SHORTREAL
;
135 PROCEDURE Tanh
* (x
: SHORTREAL
): SHORTREAL
;
140 PROCEDURE ArcSinh
* (x
: SHORTREAL
): SHORTREAL
;
145 PROCEDURE ArcCosh
* (x
: SHORTREAL
): SHORTREAL
;
150 PROCEDURE ArcTanh
* (x
: SHORTREAL
): SHORTREAL
;
155 PROCEDURE Floor
* (x
: SHORTREAL
): SHORTREAL
;
160 PROCEDURE Ceiling
* (x
: SHORTREAL
): SHORTREAL
;
165 PROCEDURE Round
* (x
: SHORTREAL
): SHORTREAL
;
170 PROCEDURE Trunc
* (x
: SHORTREAL
): SHORTREAL
;
175 PROCEDURE Frac
* (x
: SHORTREAL
): SHORTREAL
;
177 IF x
>= 0 THEN RETURN x
- ENTIER(x
)
178 ELSE RETURN x
+ ENTIER(-x
)
182 PROCEDURE Mod1
* (x
: SHORTREAL
): SHORTREAL
;
187 PROCEDURE Sign
* (x
: SHORTREAL
): SHORTREAL
;
189 IF x
> 0 THEN RETURN 1
190 ELSIF x
< 0 THEN RETURN -1
195 PROCEDURE SignBit
* (x
: SHORTREAL
): BOOLEAN;
197 RETURN copysignf(1.0, x
) > 0
200 PROCEDURE CopySign
* (x
, y
: SHORTREAL
): SHORTREAL
;
202 RETURN copysignf(x
, y
)
205 PROCEDURE Mantissa
* (x
: SHORTREAL
): SHORTREAL
;
211 PROCEDURE Exponent
* (x
: SHORTREAL
): INTEGER;
212 VAR m
: SHORTREAL
; e
: INTEGER;
218 PROCEDURE Real
* (m
: SHORTREAL
; e
: INTEGER): SHORTREAL
;