Parent: [3445a0] (diff)

Child: [28b809] (diff)

Download this file

IEEE.def.m2pp    75 lines (62 with data), 2.8 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.1 2018/05/26 16:35:35 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 *>

END IEEE.