fpgetround(3C) fpgetround(3C)
NAME
fpgetround, fpsetround, fpgetmask, fpsetmask, fpgetsticky, fpsetsticky
- IEEE floating-point environment control
SYNOPSIS
#include <ieeefp.h>
fprnd fpsetround(fprnd rnddir);
fpexcept fpgetmask(void);
fpexcept fpsetmask(fpexcept mask);
fpexcept fpgetsticky(void);
fpexcept fpsetsticky(fpexcept sticky);
DESCRIPTION
There are five floating-point exceptions: divide-by-zero, overflow,
underflow, imprecise result, and invalid operation. When a floating-
point exception occurs, the corresponding sticky bit is set (1), and
if the mask bit is enabled (1), the trap takes place. These routines
let the user change the behavior on occurrence of any of these excep-
tions, as well as change the rounding mode for floating-point opera-
tions.
FPXINV /* invalid operation exception */
FPXOFL /* overflow exception */
FPXUFL /* underflow exception */
FPXDZ /* divide-by-zero exception */
FPXIMP /* imprecise (loss of precision) */
FPRN /* round to nearest representative number */
FPRP /* round to plus infinity */
FPRM /* round to minus infinity */
FPRZ /* round to zero (truncate) */
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 is set to round to nearest (FPRN), and all
traps are disabled.
Page 1 Reliant UNIX 5.44 Printed 11/98
fpgetround(3C) fpgetround(3C)
Individual bits may be examined using the constants defined in
ieeefp.h.
NOTES
fpsetsticky() modifies all sticky flags. fpsetmask() changes all mask
bits. fpsetmask() clears the sticky bit corresponding to any exception
being enabled.
C requires truncation ("round to zero") for floating point to integral
conversions. The current rounding mode has no effect on these conver-
sions.
To recover from a trap caused by a floating point exception and then
proceed, one must clear the sticky bit. If the sticky bit is not
cleared before the next trap occurs, a wrong exception type may be
signaled.
SEE ALSO
isnan(3C).
Page 2 Reliant UNIX 5.44 Printed 11/98