DEFINITION MODULE R2MATH;
 
PROCEDURE SIN(x:REAL2):REAL2;
PROCEDURE COS(x:REAL2):REAL2;
PROCEDURE TAN(x:REAL2):REAL2;
PROCEDURE ARCSIN(x:REAL2):REAL2;
PROCEDURE ARCCOS(x:REAL2):REAL2;
PROCEDURE ARCTAN(x:REAL2):REAL2;
PROCEDURE ARCTAN2(y,x:REAL2):REAL2;
PROCEDURE EXP(x:REAL2):REAL2;
PROCEDURE LN(x:REAL2):REAL2;
PROCEDURE SQRT(x:REAL2):REAL2;
PROCEDURE SQUARE(x:REAL2):REAL2;
PROCEDURE POWER(x,y:REAL2):REAL2;
PROCEDURE FRAC(X:REAL2):REAL2;
PROCEDURE ENTIER(x:REAL2):INTEGER;
(*
PROCEDURE HAV(X:REAL2):REAL2;
PROCEDURE ARCHAV(X:REAL2):REAL2;
*)
END R2MATH.
 
IMPLEMENTATION MODULE R2MATH;
 
PROCEDURE COS(X:REAL2):REAL2;
HEX 7C FE C0 FC (@SIN+43) A7 F2 (@COS+21) CD (@HAV+6) 24 EB 21
00 00 C3 (@28) 11 92 00 EB CD (@28) END COS;
PROCEDURE SIN(X:REAL2):REAL2;
HEX 7C FE C0 FA (@SIN+36) FE FD F8 A7 F2 (@SIN+47) 54 7D 26
B5 5E 62 6B 29 19 01 57 FD 09 44 26 B6 6E 60 5F
EB C3 (@28) EE 80 67 CD (@SIN+6) 7C EE 80 67 C9 20
0A 11 92 00 EB CD (@28) C3 (@COS) 47 10 09 11 92
01 EB CD (@28) 18 B9 11 92 02 10 05 CD (@28) 18
AF CD (@20) CD (@FRAC+14) 11 92 02 CD (@4) 7C 18 A6 END SIN;
 
PROCEDURE HAV(X:REAL2):REAL2;
HEX 7C FE C0 FC (@SIN+43) A7 F2 (@HAV+17) 25 CD (@SIN) C3 (@SQUARE) 
  20 0B CD (@COS) EB 15 21 80 FF C3 (@28) 47 10
11 EB 21 92 01 CD (@28) CD (@HAV) EB 21 00 00 C3
(@28) 11 92 02 10 06 CD (@28) C3 (@HAV) CD (@20)
CD (@FRAC+14) 11 92 02 CD (@4) 7C 18 BA END HAV;
 
PROCEDURE ARCSIN(X:REAL2):REAL2;
HEX 7C FE C0 FA (@ARCSIN+52) FE FD F8 EB 21 C6 00 ED 5A F2
(@ARCSIN+40) 6B 7D 26 B5 5E 62 6B 29 19 01 B3 FD 09 44
26 B6 6E 60 5F C3 (@12) 21 00 00 CD (@28) 25 CD
(@ARCHAV) 18 0E EE 80 67 CD (@ARCSIN+6) 7C EE 80 67 C9 END ARCSIN;
 
PROCEDURE ARCCOS(X:REAL2):REAL2;
HEX CD (@ARCSIN) 11 92 00 EB C3 (@28) END ARCCOS;
 
PROCEDURE ARCHAV(X:REAL2):REAL2;
HEX 7C FE FE F2 (@ARCHAV+15) CD (@SQRT) 7C CD (@ARCSIN+6) 24 C9 EB
21 80 00 ED 5A 21 00 00 F2 (@ARCHAV+33) 14 CD (@28) 18
D5 CD (@28) CD (@ARCHAV+6) EB 21 92 01 C3 (@28) END ARCHAV;
 
PROCEDURE ARCTAN(X:REAL2):REAL2;
HEX 7C FE C0 FA (@ARCTAN+56) FE FC F8 38 1F E5 CD (@SQUARE) E5
11 6D FC CD (@4) 11 37 7E CD (@12) D1 CD (@4)
11 00 00 CD (@12) D1 C3 (@4) CD (@RECIP) 7C CD (@ARCTAN+11)
   EB 21 92 00 C3 (@28) EE 80 67 CD (@ARCTAN+6) 7C EE
80 67 C9 END ARCTAN;
 
PROCEDURE ARCTAN2(y,x:REAL2):REAL2;HEX
C1 D1 E1 E5 D5 C5 7C C6 40 E6 80 47 3E 7F A2 EE
40 4F 3E 7F A4 EE 40 B9 38 0D 20 04 7D B3 38 07
7A EE 80 57 EB 18 0D 04 7A FE C0 FA (@ARCTAN2+34H) CD (@14H)
   C3 (@ARCTAN) C5 CD (@ARCTAN2+2EH) D1 1E 92 C3 (@0CH) END ARCTAN2;
 
PROCEDURE FRAC(X:REAL2):REAL2;HEX
7C FE C0 F2 (@FRAC+15) EE 80 67 CD (@FRAC+15) 18 25 7C E6
C0 28 01 E8 CD (@TWOXP+9) 26 00 06 07 CD (@40+2) 6C 67
C9 END FRAC;
 
PROCEDURE Log2(X:REAL2):REAL2;HEX
7C 26 B5 6E 67 A7 F2 (@FRAC+25) EB 21 00 00 ED 52 CD 
(@FRAC+25) 7C EE 80 67 C9 END Log2;
 
PROCEDURE TWOXP(X:REAL2):REAL2;
HEX CD (@TWOXP+9) 7C 26 B6 6E 67 C9 7C 26 01 FE C0 F2 (@TWOXP+30)
   D6 80 3F CD (@TWOXP+30) EB 21 00 00 ED 52 C9 30 08
47 04 18 01 29 10 FD C9 CB 2C CB 1D 3C 20 F9 C9 END TWOXP;
 
PROCEDURE EXP(X:REAL2):REAL2;
CONST Log2e=RL2(1.442695);
BEGIN
RETURN TWOXP(X*Log2e)
END EXP;
 
PROCEDURE LN(X:REAL2):REAL2;
CONST LN2=RL2(0.693147);
BEGIN
RETURN Log2(X)*LN2
END LN;
 
PROCEDURE SQUARE(x:REAL2):REAL2;
HEX 7C 26 B5 6E CB 25 8F 24 6E 67 C9 END SQUARE;
 
PROCEDURE SQRT(x:REAL2):REAL2;
HEX 7C 26 B5 6E CB 2F CB 1D 24 6E 67 C9 END SQRT;
 
PROCEDURE RECIP(X:REAL2):REAL2;
HEX 7C 2F 57 26 B5 7E 2F 5F 13 6B 24 6E 62 C9 END RECIP;

PROCEDURE ENTIER(x:REAL2):INTEGER;HEX
7C 65 2E 00 C3 (@4CH)
20 F8 C9 END ENTIER;
 
PROCEDURE POWER(x,y:REAL2):REAL2;
BEGIN
RETURN TWOXP(y*Log2(x))
END POWER;
 
PROCEDURE TAN(X:REAL2):REAL2;
BEGIN
RETURN SIN(X)/COS(X)
END TAN;
 
END R2MATH.
