Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


FPGETMASK(3)               Library Functions Manual               FPGETMASK(3)

NAME
     fpgetmask, fpgetprec, fpgetround, fpgetsticky, fpsetmask, fpsetprec,
     fpsetround, fpsetsticky - IEEE FP mode control

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <ieeefp.h>

     fp_except_t
     fpgetmask(void);

     fp_prec_t
     fpgetprec(void);

     fp_rnd_t
     fpgetround(void);

     fp_except_t
     fpgetsticky(void);

     fp_except_t
     fpsetmask(fp_except_t mask);

     fp_prec_t
     fpsetprec(fp_prec_t prec);

     fp_rnd_t
     fpsetround(fp_rnd_t rnd_dir);

     fp_except_t
     fpsetsticky(fp_except_t sticky);

DESCRIPTION
     A rounding mode fp_rnd_t is one of:

           FP_RZ    rounding towards zero
           FP_RM    rounding down to (Minus infinity)
           FP_RN    rounding to nearest
           FP_RP    rounding down to (Plus infinity)
     The default mode is FP_RN.

     An fp_except_t value is a bitmask specifying an exception type and
     containing any of the values listed below.

           FP_X_INV      Invalid Operation
           FP_X_DZ       Division by zero
           FP_X_OFL      Overflow
           FP_X_UFL      Underflow
           FP_X_IMP      Imprecision (inexact)
           FP_X_IOV      Integer Overflow

     An fp_prec_t specifies the precision of the floating point operations
     listed below.

           FP_PS     24 bit (single-precision)
           FP_PRS    reserved
           FP_PD     53 bit (double-precision)
           FP_PE     64 bit (extended-precision)

     The fpsetmask() function will set the current exception mask, i.e., it
     will cause future operations with the specified result status to raise
     the SIGFPE exception.  The fpgetmask() function will return the current
     exception mask.

     The fpgetprec() function will return the current floating point
     precision.  The fpsetprec() function will set the floating point
     precision and will return the previous precision.

     The fpsetround() function will cause future operations to use the
     specified dynamic rounding mode.  The fpgetround() function will return
     the current rounding mode.

     Note:   On some architectures, instructions can optionally specify static
             rounding modes and exception enables that will supersede the
             specified dynamic mode.  On other architectures, these features
             may not be fully supported.

     A "sticky" status word may be maintained in which a bit is set every time
     an exceptional floating point condition is encountered, whether or not a
     SIGFPE is generated.  The fpsetsticky() function will set or clear the
     specified exception history bits.  The fpgetsticky() function will return
     the exception history bits.

RETURN VALUES
     The fpgetround() and fpsetround() functions return the (previous)
     rounding mode.  The fpgetmask(), fpsetmask(), fpgetsticky(), and
     fpsetsticky() functions return the (previous) exception mask and
     exception history bits.

SEE ALSO
     sigaction(2), fenv(3)

BUGS
     There is no way to return an unsupported value.  Not all processors
     support all the modes.  These interfaces are deprecated and the ones in
     fenv(3) should be used, although the interfaces in fenv(3) don't support
     getting or setting the precision.

NetBSD 10.99                    March 26, 2011                    NetBSD 10.99