D=/IEEE_MODE=FAST (Alpha)
Specifies the arithmetic exception handling used for floating-point
calculations, such as for exceptional values. It also controls the
precision of exception reporting (like /SYNCHRONOUS_EXCEPTIONS
(Alpha only)).
Exceptional values are associated with IEEE arithmetic and include
Infinity (+ and -) values, Not-A-Number (NaN) values, invalid data
values, and denormalized numbers. (See the HP Fortran for OpenVMS
User Manual.)
Use the /IEEE_MODE qualifier to control:
o Whether exceptional values cause program termination or
continuation
o Whether exception reporting is precise
o Whether underflowed (denormalized) values are set to zero
This qualifier only applies to arithmetic calculations when:
o You omit the /MATH_LIBRARY=FAST (Alpha only) qualifier (or
/FAST) qualifier. Using /MATH_LIBRARY=FAST provides limited
handling of exceptional values of arguments to and results from
VSI Fortran intrinsic functions.
o You specify the /FLOAT=IEEE_FLOAT qualifier to request IEEE
S_floating (REAL(KIND=4)) and T_floating (REAL(KIND=8)) data.
If you specify /FLOAT=G_FLOAT (the default on Alpha) or /FLOAT=D_FLOAT,
only the default (/IEEE_MODE=FAST) can be used. Because X_floating data
(REAL(KIND=16)) has no denormalized range, DENORM_RESULTS is
equivalent to UNDERFLOW_TO_ZERO for X_floating data.
NOTE
You should choose the value for the /IEEE_MODE
qualifier based on the floating-point semantics
your application requires, not on possible
performance benefits.
FAST
Specifies that the program should stop if any exceptional values
are detected.
When the program encounters or calculates any exceptional values
(Infinity (+ or -), NaN, or invalid data) in a calculation, the
program stops and displays a message. This allows the fastest
run-time performance.
Denormalized values calculated in an arithmetic expression are
set to zero. Denormalized values encountered as variables in an
arithmetic expression (including constant values) are treated as
invalid data (an exceptional value), which stops the program.
Exceptions are not reported until one or more instructions after
the instruction that caused the exception. To have exceptions
reported at the instruction that caused the exception when using
/IEEE_MODE=FAST, also specify /SYNCHRONOUS_EXCEPTIONS (Alpha
only).
/IEEE_MODE=FAST is the default on Alpha systems.
UNDERFLOW_TO_ZERO
Specifies that the program should continue if any exceptional
values are detected and that calculated denormalized (underflow)
values should be set to zero.
When the program encounters an exceptional value (Infinity (+ or
-), NaN, or invalid data) in an arithmetic expression, the
program continues. It also continues when the result of a
calculation is an exceptional value.
Calculated denormalized values are set to zero. This prevents
the denormalized number from being used in a subsequent
calculation (propagated).
Exceptions are reported at the instruction that caused the
exception (same as /SYNCHRONOUS_EXCEPTIONS). This allows precise
run-time reporting of exceptions for those programs that generate
exceptional values, but slows program run-time performance.
Using UNDERFLOW_TO_ZERO allows programs to handle exceptional
values, but does not propagate numbers in the denormalized range.
To request run-time messages for arithmetic exceptions, specify
the /CHECK=FP_EXCEPTIONS qualifier.
DENORM_RESULTS
Specifies that the program should continue if any exceptional
values are detected and that calculated denormalized values
should be left as is (allows underflow).
When the program encounters an exceptional value (Infinity (+ or
-), NaN, or invalid data) in an arithmetic expression, the
program continues. It also continues when the result of a
calculation is an exceptional value.
Calculated denormalized values are left as denormalized values.
When a denormalized number is used in a subsequent arithmetic
expression, it requires extra software-assisted handling and
slows performance. A program that generates denormalized numbers
will be slower than the same program compiled using
/IEEE_MODE=UNDERFLOW_TO_ZERO.
Exceptions are reported at the instruction that caused the
exception (same as /SYNCHRONOUS_EXCEPTIONS). This allows precise
run-time reporting of exceptions for those programs that generate
exceptional values, but slows program run-time performance.
Using DENORM_RESULTS allows programs to handle exceptional
values, including allowing underflow of denormalized numbers.
To request run-time messages for arithmetic exceptions, specify
the /CHECK=FP_EXCEPTIONS qualifier. To request run-time messages
for only those arithmetic exceptions related to denormalized
numbers, specify the /CHECK=UNDERFLOW qualifier.
/IEEE_MODE=DENORM_RESULTS is the default on I64 systems.