VMS Help CXX, Qualifiers, /IEEE_MODE *Conan The Librarian |
/IEEE_MODE /IEEE_MODE=option /IEEE_MODE=FAST (D) (Alpha only) /IEEE_MODE=DENORM_RESULTS (D) (I64 only) Selects the IEEE floating-point mode to be used if the /FLOAT=IEEE_FLOAT qualifier is specified. The options are: Option Usage FAST During program execution, only finite values (no infinities, NaNs, or denorms) are created. Underflows and denormal values are flushed to zero. Exceptional conditions, such as floating- point overflow, divide-by-zero, or use of an IEEE exceptional operand are fatal. UNDERFLOW_ Generate infinities and NaNs. Flush denormalized TO_ZERO results and underflow to zero without exceptions. DENORM_ Same as the UNDERFLOW_TO_ZERO option, except that RESULTS denorms are generated. INEXACT Same as the DENORM_RESULTS option, except that inexact values are trapped. This is the slowest mode, and is not appropriate for any sort of general-purpose computations. On Alpha systems, the default is /IEEE_MODE=FAST. On I64 systems, the default is /IEEE_MODE=DENORM_RESULTS. The INFINITY and NAN macros defined in <math.h> are available to programs compiled with /FLOAT=IEEE and /IEEE_MODE={anything other than FAST}. On Alpha sytems, the /IEEE_MODE qualifier generally has its greatest effect on the generated code of a compilation. When calls are made between functions compiled with different /IEEE_ MODE qualifiers, each function produces the /IEEE_MODE behavior with which it was compiled. On I64 systems, the /IEEE_MODE qualifier primarily affects only the setting of a hardware register at program startup. In general, the /IEEE_MODE behavior for a given function is controlled by the /IEEE_MODE option specified on the compilation that produced the main program: the startup code for the main program sets the hardware register according the command-line qualifiers used to compile the main program. When applied to a compilation that does not contain a main program, the /IEEE_MODE qualifier does have some effect: it might affect the evaluation of floating-point constant expressions, and it is used to set the EXCEPTION_MODE used by the math library for calls from that compilation. But the qualifier has no effect on the exceptional behavior of floating-point calculations generated as inline code for that compilation. Therefore, if floating-point exceptional behavior is important to an application, all of its compilations, including the one containing the main program, should be compiled with the same /IEEE_MODE setting. Even on Alpha systems, the particular setting of /IEEE_ MODE=UNDERFLOW_TO_ZERO has this characteristic: its primary effect requires the setting of a runtime status register, and so it needs to be specified on the compilation containing the main program in order to be effective in other compilations. Also see the /FLOAT qualifier.
|