@database MathLibLong
@node Main "MathLibLong"

Prozeduren

   @{" acos " link Modul 35}                        @{" arctan " link Modul 37}                      @{" asin " link Modul 36}
   @{" atanh " link Modul 58}                       @{" cos " link Modul 38}                         @{" cosh " link Modul 39}
   @{" etoxm1 " link Modul 59}                      @{" exp " link Modul 40}                         @{" fieee " link Modul 41}
   @{" ln " link Modul 43}                          @{" log " link Modul 44}                         @{" log10 " link Modul 46}
   @{" log2 " link Modul 60}                        @{" lognp1 " link Modul 61}                      @{" pow " link Modul 47}
   @{" sin " link Modul 48}                         @{" sincos " link Modul 49}                      @{" sinh " link Modul 51}
   @{" sqr " link Modul 64}                         @{" sqrt " link Modul 52}                        @{" tan " link Modul 53}
   @{" tanh " link Modul 54}                        @{" tentox " link Modul 62}                      @{" tieee " link Modul 55}
   @{" twotox " link Modul 63}                   

Konstanten

   @{" e " link Modul 32}                           @{" mathieeedoubtransMinVersion " link Modul 29}   @{" mathieeedoubtransName " link Modul 31}
   @{" pi " link Modul 33}                       

Variablen

   @{" mathieeedoubtransBase " link Modul 26}       @{" mathieeedoubtransVersion " link Modul 24} 

@endnode
@node Modul "TMP:Modula-2/MathLibLong.def"
DEFINITION MODULE MathLibLong;

(*
 * Dies Modul kann selbstverstaendlich normal benutzt
 * werden, es wird jedoch vom Compiler automatisch
 * importiert, wenn die transzendenten LONGREAL-
 * Prozeduren des Moduls SYSTEM benutzt werden und nicht
 * fuer 68881 compiliert wird.
 * ACHTUNG: Nicht alle hierin deklarierten Prozeduren
 * sind in SYSTEM vorhanden!
 *)

(*$ LargeVars:=FALSE LongAlign:=FALSE NameChk:=FALSE *)
(* Sehr wichtig: muß im SMALL-Modell kompiliert sein! *)

FROM SYSTEM IMPORT ADDRESS;

(*
 * Dies ist eine Mischung aus einem "normalen" und einem
 * Library-Modul.
 * Da einige der Prozeduren nicht direkt in der Library
 * vorkommen, ist eine Implementation notwendig.
 *)

VAR (* read-only! *)
  mathieeedoubtransVersion:INTEGER;
  mathieeedoubtransBase:ADDRESS;


CONST
  mathieeedoubtransMinVersion=34;
  mathieeedoubtransName="mathieeedoubtrans.library";
  e = 2.71828182845904523536;
  pi= 3.14159265358979323846;

PROCEDURE acos(x{0}:LONGREAL):LONGREAL; CODE -120;
PROCEDURE asin(x{0}:LONGREAL):LONGREAL; CODE -114;
PROCEDURE arctan(x{0}:LONGREAL):LONGREAL; CODE -30;
PROCEDURE cos(x{0}:LONGREAL):LONGREAL; CODE -42;
PROCEDURE cosh(x{0}:LONGREAL):LONGREAL; CODE -66;
PROCEDURE exp(x{0}:LONGREAL):LONGREAL; CODE -78;
PROCEDURE fieee(x{0}:REAL):LONGREAL; CODE -108;

PROCEDURE ln(x{0}:LONGREAL):LONGREAL; CODE -84;
PROCEDURE log(x{0}:LONGREAL):LONGREAL; CODE -84;(* !! *)

PROCEDURE log10(x{0}:LONGREAL):LONGREAL; CODE -126;
PROCEDURE pow(base{0},exp{2}:LONGREAL):LONGREAL;CODE -90;
PROCEDURE sin(x{0}:LONGREAL):LONGREAL; CODE -36;
PROCEDURE sincos(x{0}:LONGREAL;
                 VAR cos{8}:LONGREAL):LONGREAL; CODE -54;
PROCEDURE sinh(x{0}:LONGREAL):LONGREAL; CODE -60;
PROCEDURE sqrt(x{0}:LONGREAL):LONGREAL; CODE -96;
PROCEDURE tan(x{0}:LONGREAL):LONGREAL; CODE -48;
PROCEDURE tanh(x{0}:LONGREAL):LONGREAL; CODE -72;
PROCEDURE tieee(x{0}:LONGREAL):REAL; CODE -102;

(* Prozeduren mit Implementation: *)
PROCEDURE atanh(x{0}:LONGREAL):LONGREAL;
PROCEDURE etoxm1(x{0}:LONGREAL):LONGREAL;
PROCEDURE log2(x{0}:LONGREAL):LONGREAL;
PROCEDURE lognp1(x{0}:LONGREAL):LONGREAL;
PROCEDURE tentox(x{0}:LONGREAL):LONGREAL;
PROCEDURE twotox(x{0}:LONGREAL):LONGREAL;
PROCEDURE sqr(x{0}:LONGREAL):LONGREAL;

END MathLibLong.

@endnode
