Real: DEFINITIONS = { NumberType: TYPE = {normal, zero, infinity, nan}; Extended: TYPE = RECORD [ type: NumberType, sign: BOOL, exp: INTEGER, frac: LONG CARDINAL]; RoundingMode: TYPE = {rn, rz, rm, rp}; NormalizationMode: TYPE = {warning, normalizing}; Mode: TYPE = RECORD [ nm: NormalizationMode _ warning, round: RoundingMode _ rn]; PlusZero: REAL = LOOPHOLE[LONG[00000000000b]]; MinusZero: REAL = LOOPHOLE[20000000000b]; PlusInfinity: REAL = LOOPHOLE[17740000000b]; MinusInfinity: REAL = LOOPHOLE[37740000000b]; TrapNonTrappingNaN: LONG CARDINAL = LONG[1]; TrapTrappingNaN: LONG CARDINAL = LONG[2]; Flag: TYPE = BOOL _ FALSE; Exception: TYPE = { fixOverflow, inexactResult, invalidOperation, divisionByZero, overflow, underflow}; ExceptionFlags: TYPE = PACKED ARRAY Exception OF Flag; NoExceptions: ExceptionFlags = ALL[FALSE]; RealException: SIGNAL [flags: ExceptionFlags]; RealToExtended: PROC [a: REAL] RETURNS [Extended]; ExtendedToReal: PROC [e: Extended] RETURNS [REAL]; Abs: PROC [a: REAL] RETURNS [REAL]; Negate: PROC [a: REAL] RETURNS [REAL]; PairToReal: PROC [fr: LONG INTEGER, exp10: INTEGER] RETURNS [REAL]; }. Ffile IeeeFloat.mesa Last modified by Satterthwaite, May 31, 1982 12:02 pm adaptation of Real.mesa+Ieee.mesa for compiler use extended format modes rn: Round to nearest (unbiased) rz: Round to zero (truncate) rp: Round to plus infinity (round up) rm: Round to minus infinity (round down) Constants Exceptions Operations Ęe˜Jšœ™Jšœ5™5Jšœ2™2J˜JšœĪk œ˜˜Jšœ™˜Jšœ œ!˜1J˜šœ œœ˜J˜Jšœœ˜ Jšœœ˜ Jšœœœ˜J˜——Jšœ™˜šœœ˜&Jšœ™Jšœ™Jšœ%™%Jšœ(™(J˜—Jšœœ˜1J˜šœœœ˜J˜ J˜J˜——Jšœ ™ ˜Jšœ œœœ˜.Jšœ œœ˜)Jšœœœ˜,Jšœœœ˜-J˜Jšœœœœ˜,Jšœœœœ˜)J˜—Jšœ ™ ˜Jšœœœœ˜šœ œ˜J˜S—Jš œœœœ œ˜6J˜Jšœœœ˜*J˜—Jšœ ™ ˜Jšœœ˜.J˜JšĪnœœœœ ˜2Jšžœœœœ˜2J˜Jš žœœœœœ˜#Jš žœœœœœ˜&Jšž œœœœ œœœ˜CJ˜J˜J˜———…—|'