fpgetround(S) 6 January 1993 fpgetround(S) Name 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, under- flow, 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 (FPRN), 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 conver- sions. 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 instruc- tion 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.