|
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.
|
|