1TYPE float64 IS FLOAT; 2TYPE bool IS BOOLEAN {false, true}; 3TYPE int32 IS SIGNED (32); 4 5PUBLIC FUNCTION fadd (a : float64; b : float64) RETURN float64 6DECLARE 7BEGIN 8 RETURN a +# b; 9END; 10 11PUBLIC FUNCTION fsub (a : float64; b : float64) RETURN float64 12DECLARE 13BEGIN 14 RETURN a -# b; 15END; 16 17PUBLIC FUNCTION fmul (a : float64; b : float64) RETURN float64 18DECLARE 19BEGIN 20 RETURN a *# b; 21END; 22 23PUBLIC FUNCTION fdiv (a : float64; b : float64) RETURN float64 24DECLARE 25BEGIN 26 RETURN a /# b; 27END; 28 29PUBLIC FUNCTION fneg (a : float64) RETURN float64 30DECLARE 31BEGIN 32 RETURN -a; 33END; 34 35PUBLIC FUNCTION fabs (a : float64) RETURN float64 36DECLARE 37BEGIN 38 RETURN ABS a; 39END; 40 41PUBLIC FUNCTION fcall1 (a : float64; b : float64) RETURN float64 42DECLARE 43BEGIN 44 RETURN fadd (fmul (a, b), fneg (b)); 45END; 46 47PUBLIC FUNCTION fgt (a : float64; b : float64) RETURN bool 48DECLARE 49BEGIN 50 RETURN bool'(a >= b); 51END; 52 53PUBLIC FUNCTION mainint () RETURN int32 54DECLARE 55 LOCAL VAR l : int32; 56 LOCAL VAR r : int32; 57BEGIN 58 l:= 1; 59 r := 2; 60 IF bool'(l < r) THEN 61 RETURN int32'(0); 62 ELSE 63 RETURN int32'(1); 64 END IF; 65END; 66 67PRIVATE CONSTANT fone : float64; 68CONSTANT fone := 1.0; 69 70-- Return 0 in case of error. 71PUBLIC FUNCTION main () RETURN int32 72DECLARE 73 LOCAL VAR lf : float64; 74 LOCAL VAR rf : float64; 75BEGIN 76 lf := 1.0; 77 rf := 2.0; 78 IF bool'(lf >= rf) THEN 79 RETURN int32'(0); 80 END IF; 81 lf := fadd (lf, fone); 82 IF bool'(lf /= rf) THEN 83 RETURN int32'(0); 84 END IF; 85 86 lf := fone; 87 lf := -lf; 88 IF bool'(lf > 0.0) THEN 89 RETURN int32'(0); 90 END IF; 91 92 lf := ABS lf; 93 IF bool'(lf /= fone) THEN 94 RETURN int32'(0); 95 END IF; 96 97 lf := 2.0; 98 IF bool'(fdiv (lf, fone) /= lf) THEN 99 RETURN int32'(0); 100 END IF; 101 102 RETURN int32'(1); 103END; 104 105