(* Release 3.10 *) (*-------------------------------------------------------------------------* * * * FLOAT.DEF - Modula-2 interface to FLOAT.H * * * * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. * * All Rights Reserved * * * *--------------------------------------------------------------------------*) (*# project("#set tsc='on'") *) (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on) *) (*# module(implementation=>off, init_code=>off) *) (*# name(prefix=>c) *) DEFINITION MODULE float; CONST DBL_DIG = 15; (* number of decimal digits of precision *) DBL_MANT_DIG = 53; (* number of bits in mantissa *) DBL_MAX_10_EXP = 308; (* maximum decimal exponent *) DBL_MAX_EXP = 1024; (* maximum binary exponent *) DBL_MIN_10_EXP = -307; (* minimum decimal exponent *) DBL_MIN_EXP = -1021; (* minimum binary exponent *) DBL_RADIX = 2; (* exponent radix *) DBL_ROUNDS = 1; (* addition rounding *) DBL_EPSILON = 2.2204460492503131E-016; (* 1.0+DBL_EPSILON != 1.0 *) DBL_MAX = 1.7976931348623151E+308; (* maximum value *) DBL_MIN = 2.2250738585072014E-308; (* minimum positive value *) FLT_DIG = 6; (* number of decimal digits of precision *) FLT_GUARD = 0; FLT_MANT_DIG = 24; (* number of bits in mantissa *) FLT_MAX_10_EXP = 38; (* maximum decimal exponent *) FLT_MAX_EXP = 128; (* maximum binary exponent *) FLT_MIN_10_EXP = -37; (* minimum decimal exponent *) FLT_MIN_EXP = -125; (* minimum binary exponent *) FLT_NORMALIZE = 0; FLT_RADIX = 2; (* exponent radix *) FLT_ROUNDS = 1; (* addition rounding chops *) FLT_EPSILON = 1.192092896E-07; (* smallest such that 1.0+FLT_EPSILON != 1.0 *) FLT_MAX = 3.402823466E+38; (* maximum value *) FLT_MIN = 1.175494351E-38; (* minimum positive value *) LDBL_DIG = DBL_DIG; (* number of decimal digits of precision *) LDBL_EPSILON = DBL_EPSILON; (* smallest such that 1.0+LDBL_EPSILON != 1.0 *) LDBL_MANT_DIG = DBL_MANT_DIG; (* number of bits in mantissa *) LDBL_MAX = DBL_MAX; (* maximum value *) LDBL_MAX_10_EXP = DBL_MAX_10_EXP; (* maximum decimal exponent *) LDBL_MAX_EXP = DBL_MAX_EXP; (* maximum binary exponent *) LDBL_MIN = DBL_MIN; (* minimum positive value *) LDBL_MIN_10_EXP = DBL_MIN_10_EXP; (* minimum deimal exponent *) LDBL_MIN_EXP = DBL_MIN_EXP; (* minimum binary exponent *) LDBL_RADIX = DBL_RADIX; (* exponent radix *) LDBL_ROUNDS = DBL_ROUNDS; (* addition rounding *) (* X087 math control information *) (* Control Word Mask and bit definitions *) MCW_EM = 003FH; (* interrupt Exception Masks *) EM_INVALID = 0001H; (* invalid *) EM_DENORMAL = 0002H; (* denormal *) EM_ZERODIVIDE = 0004H; (* zero divide *) EM_OVERFLOW = 0008H; (* overflow *) EM_UNDERFLOW = 0010H; (* underflow *) EM_INEXACT = 0020H; (* inexact *) MCW_IC = 1000H; (* Infinity Control *) IC_AFFINE = 1000H; (* affine *) IC_PROJECTIVE = 0000H; (* projective *) MCW_RC = 0C00H; (* Rounding Control *) RC_CHOP = 0C00H; (* chop *) RC_UP = 0800H; (* up *) RC_DOWN = 0400H; (* down *) RC_NEAR = 0000H; (* near *) MCW_PC = 0300H; (* Precision Control *) PC_24 = 0000H; (* 24 bits *) PC_53 = 0200H; (* 53 bits *) PC_64 = 0300H; (* 64 bits *) (* Initial Control Word value *) CW_DEFAULT = (IC_AFFINE+RC_NEAR+PC_64+EM_DENORMAL+EM_UNDERFLOW+EM_INEXACT); (* user Status Word bit definitions *) SW_INVALID = 0001H; (* invalid *) SW_DENORMAL = 0002H; (* denormal *) SW_ZERODIVIDE = 0004H; (* zero divide *) SW_OVERFLOW = 0008H; (* overflow *) SW_UNDERFLOW = 0010H; (* underflow *) SW_INEXACT = 0020H; (* precision inexact *) PROCEDURE _clear87():CARDINAL; PROCEDURE _control87():CARDINAL; PROCEDURE _fpreset; PROCEDURE _status87():CARDINAL; END float.