feclearexcept,
    fegetexceptflag,
    feraiseexcept,
    fesetexceptflag,
    fetestexcept —
    floating-point exception flag manipulation
#include
  <fenv.h>
#pragma STDC FENV_ACCESS ON
int
  
  feclearexcept(int
    excepts);
int
  
  fegetexceptflag(fexcept_t
    *flagp, int
    excepts);
int
  
  feraiseexcept(int
    excepts);
int
  
  fesetexceptflag(const
    fexcept_t *flagp, int
    excepts);
int
  
  fetestexcept(int
    excepts);
The
    feclearexcept()
    routine clears the floating-point exception flags specified by
    excepts, whereas
    feraiseexcept()
    raises the specified exceptions. Raising an exception causes the
    corresponding flag to be set, and a SIGFPE is
    delivered to the process if the exception is unmasked.
The
    fetestexcept()
    function determines which flags are currently set, of those specified by
    excepts.
The
    fegetexceptflag()
    function stores the state of the exception flags specified in
    excepts in the opaque object pointed to by
    flagp. Similarly,
    fesetexceptflag()
    changes the specified exception flags to reflect the state stored in the
    object pointed to by flagp. Note that the flags
    restored with fesetexceptflag() must be a (not
    necessarily proper) subset of the flags recorded by a prior call to
    fegetexceptflag().
For all of these functions, the possible types of exceptions
    include those described in
    fenv(3).
    Some architectures may define other types of floating-point exceptions.
On some architectures, raising an overflow or underflow exception
    also causes an inexact exception to be raised. In these cases, the overflow
    or underflow will be raised first.
The fegetexceptflag() and
    fesetexceptflag() routines are preferred to
    fetestexcept() and
    feraiseexcept(), respectively, for saving and
    restoring exception flags. The latter do not re-raise exceptions and may
    preserve architecture-specific information such as addresses where
    exceptions occurred.
The feclearexcept(),
    fegetexceptflag(),
    feraiseexcept(), and
    fesetexceptflag() functions return 0 upon success,
    and non-zero otherwise. The fetestexcept() function
    returns the bitwise OR of the values of the current exception flags that
    were requested.
The feclearexcept(),
    fegetexceptflag(),
    feraiseexcept(),
    fesetexceptflag(), and
    fetestexcept() routines conform to
    ISO/IEC 9899:1999
  (“ISO C99”).
These functions first appeared in FreeBSD
    5.3.