IEEE.def.m2pp
81 lines (66 with data), 3.1 kB
DEFINITION MODULE IEEE;
(*========================================================================*)
(* HINWEIS : Bitte nur die Datei IEEE.def.m2pp editieren *)
(*========================================================================*)
(* Es sind 2 Versionen enthalten die mit *)
(* *)
(* m2pp -D __{Parameter}__ < IEEE.mod.m2pp > IEEE.mod *)
(* *)
(* mit Parameter = {LITTLEENDIAN|BIGENDIAN} erzeugt werden koennen. *)
(* *)
(* There are two version contained, one for little and one for big endian *)
(* machines which can be produced by the m2pp command line given above *)
(*------------------------------------------------------------------------*)
(* IEEE positive infinity (NAN) and infinity (INF) constants for *)
(* IEEE 754 machines. *)
(*------------------------------------------------------------------------*)
(* Implementation : Michael Riedl *)
(* Licence : GNU Lesser General Public License (LGPL) *)
(*------------------------------------------------------------------------*)
(* $Id: IEEE.def.m2pp,v 1.2 2019/02/01 22:24:03 mriedl Exp mriedl $ *)
<* IF (__XDS__) THEN *>
FROM SYSTEM IMPORT CARD8;
<* END *>
<* IF (__GM2__) THEN *>
FROM SYSTEM IMPORT CARDINAL8;
<* END *>
TYPE LongReal = RECORD
CASE : BOOLEAN OF
<* IF (__XDS__) THEN *>
|TRUE : C8 : ARRAY [0..7] OF CARD8;
<* END *>
<* IF (__GM2__) THEN *>
|TRUE : C8 : ARRAY [0..7] OF CARDINAL8;
<* END *>
|FALSE: R8 : LONGREAL;
END;
END;
<* IF (__LITTLEENDIAN__) THEN *>
(* LITTLE ENDIAN *)
(* Not accepted by XDS
*
* CONST INF = {000H,000H,000H,000H,000H,000H,0F0H,07FH };
* NAN = {000H,000H,000H,000H,000H,000H,0F8H,07FH };
*)
CONST inf = LongReal{TRUE,{000H,000H,000H,000H,000H,000H,0F0H,07FH}};
nan = LongReal{TRUE,{000H,000H,000H,000H,000H,000H,0F8H,07FH}};
INF = inf.R8;
NAN = nan.R8;
<* END *>
<* IF (__BIGENDIAN__) THEN *>
(* BIG ENDIAN *)
(* Not accepted by XDS
*
* CONST INF := {07FH,0F0H,000H,000H,000H,000H,000H,000H};
* NAN := {07FH,0F8H,000H,000H,000H,000H,000H,000H};
*)
CONST inf = LongReal{TRUE,{07FH,0F0H,000H,000H,000H,000H,000H,000H}};
nan = LongReal{TRUE,{07FH,0F8H,000H,000H,000H,000H,000H,000H}};
INF = inf.R8;
NAN = nan.R8;
<* END *>
PROCEDURE IsLittleEndian() : BOOLEAN;
(*---------------------------------------------------------------*)
(* Returns true if machine is little endian, false otherwise *)
(*---------------------------------------------------------------*)
END IEEE.