!*** MODULE $IEEEDEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN PARAMETER IEEE$K_VERSION_NUMBER = '00000002'X ! ! IEEE Floating Point control definitions. ! ! ! The following values are used to set the precision control and rounding control fields via ! SYS$IEEE_SET_PRECISION_MODE and SYS$IEEE_SET_ROUNDING_MODE. (Note that one can not set ! precision mode on Alpha). ! PARAMETER IEEE$C_PM_NO_CHANGE = -1 ! No change. Just get previous value PARAMETER IEEE$C_PM_SINGLE = '00000000'X ! Single Precision PARAMETER IEEE$C_PM_UNUSED = '00000001'X ! This value has no meaning PARAMETER IEEE$C_PM_DOUBLE = '00000002'X ! Double Precision PARAMETER IEEE$C_PM_DOUBLE_EXTENDED = '00000003'X ! Double-Extended Precision PARAMETER IEEE$C_PM_MAX = '00000003'X ! Maximum legal value PARAMETER IEEE$C_RM_NO_CHANGE = -1 ! No change. Just get previous value PARAMETER IEEE$C_RM_NEAREST = '00000000'X ! Nearest (or even) PARAMETER IEEE$C_RM_DOWN = '00000001'X ! -Infinity (down) PARAMETER IEEE$C_RM_UP = '00000002'X ! +Infinity (up) PARAMETER IEEE$C_RM_TRUNCATE = '00000003'X ! Zero (truncate/chop) PARAMETER IEEE$C_RM_MAX = '00000003'X ! Maximum legal value ! ! The following structure defines bits for the (software) IEEE Floating Point ! control register on Alpha, and for the values passed to SYS$IEEE_SET_FP_CONTROL ! on all architectures (except VAX where it does not exist). ! PARAMETER IEEE$M_TRAP_ENABLE_INV = '00000002'X PARAMETER IEEE$M_TRAP_ENABLE_DZE = '00000004'X PARAMETER IEEE$M_TRAP_ENABLE_OVF = '00000008'X PARAMETER IEEE$M_TRAP_ENABLE_UNF = '00000010'X PARAMETER IEEE$M_TRAP_ENABLE_INE = '00000020'X PARAMETER IEEE$M_TRAP_ENABLE_DNOE = '00000040'X PARAMETER IEEE$M_MAP_DNZ = '00002000'X PARAMETER IEEE$M_MAP_UMZ = '00004000'X PARAMETER IEEE$M_INHERIT = '00008000'X PARAMETER IEEE$M_STATUS_INV = '00020000'X PARAMETER IEEE$M_STATUS_DZE = '00040000'X PARAMETER IEEE$M_STATUS_OVF = '00080000'X PARAMETER IEEE$M_STATUS_UNF = '00100000'X PARAMETER IEEE$M_STATUS_INE = '00200000'X PARAMETER IEEE$M_STATUS_DNO = '00400000'X PARAMETER IEEE$M_PC = '01800000'X PARAMETER IEEE$M_RC = '06000000'X PARAMETER IEEE$M_WPFP = '08000000'X STRUCTURE /IEEE/ UNION MAP INTEGER*4 IEEE$Q_FLAGS(2) ! Internal flags END MAP MAP ! Trap enable flags PARAMETER IEEE$S_TRAP_ENABLE_INV = 1 PARAMETER IEEE$V_TRAP_ENABLE_INV = 1 ! invalid operation PARAMETER IEEE$S_TRAP_ENABLE_DZE = 1 PARAMETER IEEE$V_TRAP_ENABLE_DZE = 2 ! divide by zero PARAMETER IEEE$S_TRAP_ENABLE_OVF = 1 PARAMETER IEEE$V_TRAP_ENABLE_OVF = 3 ! overflow PARAMETER IEEE$S_TRAP_ENABLE_UNF = 1 PARAMETER IEEE$V_TRAP_ENABLE_UNF = 4 ! underflow PARAMETER IEEE$S_TRAP_ENABLE_INE = 1 PARAMETER IEEE$V_TRAP_ENABLE_INE = 5 ! inexact PARAMETER IEEE$S_TRAP_ENABLE_DNOE = 1 PARAMETER IEEE$V_TRAP_ENABLE_DNOE = 6 ! denormal operand exception enable PARAMETER IEEE$S_MAP_DNZ = 1 PARAMETER IEEE$V_MAP_DNZ = 13 ! denormal operands mapped to 0.0 PARAMETER IEEE$S_MAP_UMZ = 1 PARAMETER IEEE$V_MAP_UMZ = 14 ! underflows mapped to 0.0 PARAMETER IEEE$S_INHERIT = 1 PARAMETER IEEE$V_INHERIT = 15 ! inherit FP state on thread create PARAMETER IEEE$S_STATUS_INV = 1 PARAMETER IEEE$V_STATUS_INV = 17 ! invalid operation PARAMETER IEEE$S_STATUS_DZE = 1 PARAMETER IEEE$V_STATUS_DZE = 18 ! divide by zero PARAMETER IEEE$S_STATUS_OVF = 1 PARAMETER IEEE$V_STATUS_OVF = 19 ! overflow PARAMETER IEEE$S_STATUS_UNF = 1 PARAMETER IEEE$V_STATUS_UNF = 20 ! underflow PARAMETER IEEE$S_STATUS_INE = 1 PARAMETER IEEE$V_STATUS_INE = 21 ! inexact PARAMETER IEEE$S_STATUS_DNO = 1 PARAMETER IEEE$V_STATUS_DNO = 22 ! denormal operand ! Precision, rounding, and WPFP are not currently supported on Alpha. PARAMETER IEEE$S_PC = 2 PARAMETER IEEE$V_PC = 23 ! Precision control PARAMETER IEEE$S_RC = 2 PARAMETER IEEE$V_RC = 25 ! Rounding control PARAMETER IEEE$S_WPFP = 1 PARAMETER IEEE$V_WPFP = 27 ! Whole program floating point mode BYTE %FILL (3) END MAP END UNION END STRUCTURE ! IEEE !DEC$ END OPTIONS