fpgetround(S)
fpgetround, fpsetround, fpgetmask, fpsetmask, fpgetsticky, fpsetsticky --
IEEE floating point environment control
Syntax
cc . . . -lc
#include <ieeefp.h>
typedef enum {
FP_RN=0, /* round to nearest */
FP_RM=1, /* round toward minus infinity */
FP_RP=2, /* round toward plus infinity */
FP_RZ=3 /* round to zero (truncate) */
} fp_rnd;
fp_rnd fpgetround()
fp_rnd fpsetround(rnd_dir)
fp_rnd rnd_dir;
#define fp_except int
#define FP_X_INV 0x01 /* invalid operation exception*/
#define FP_X_OFL 0x08 /* overflow exception*/
#define FP_X_UFL 0x10 /* underflow exception*/
#define FP_X_DZ 0x04 /* divide-by-zero exception*/
#define FP_X_IMP 0x20 /* imprecise (loss of precision)*/
#define FP_X_DNML 0x02 /* denormalization exception */
fp_except fpgetmask()
fp_except fpsetmask(mask)
fp_except mask;
fp_except fpgetsticky()
fp_except fpsetsticky(sticky)
fp_except sticky;
Description
There are six floating point exceptions: divide-by-zero,
overflow, underflow,
imprecise (inexact) result, denormalization, and invalid operation.
When a floating point exception occurs, the corresponding sticky
bit is set; if the mask bit is enabled, the trap takes place.
These routines let the user change the behavior if any of these
exceptions occur, as well as change the rounding mode for
floating point operations.
fpgetround-
returns the current rounding mode.
fpsetround-
sets the rounding mode and returns the previous rounding mode.
fpgetmask-
returns the current exception masks.
fpsetmask-
sets the exception masks and returns the previous setting.
fpgetsticky-
returns the current exception sticky flags.
fpsetsticky-
sets (clears) the exception sticky flags and
returns the previous setting.
The default environment on the Intel 80386 processor family is:
Rounding mode set to nearest (FP_RN),
Divide-by-zero, Floating point overflow, and
Invalid operation traps enabled.
See also
isnan(S)
Warnings
fpsetsticky modifies all sticky flags.
fpsetmask changes all mask bits.
C requires truncation (round to zero) for floating point
to integral conversions.
The current rounding mode has no effect on these
conversions.
Notes
You must clear the sticky bit to recover from the trap
and to proceed. If the sticky bit is not cleared before
the next floating point instruction is executed, a wrong exception type may
be signaled.
When you call fpsetmask
make sure that the sticky bit
corresponding to the enabled exception
is cleared.
Standards conformance
fpgetround is not part of any currently supported standard;
it is an extension of AT&T System V provided by the Santa Cruz Operation.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003