FECLEAREXCEPT(3)

NAME
feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept - functions providing access to the floating-point status flags.

SYNOPSIS
#include <fenv.h>
#pragma STDC FENV_ACCESS ON
int
feclearexcept(int excepts);
int
feraiseexcept(int excepts);
int
fetestexcept(int excepts);
int
fegetexceptflag(fexcept_t *flagp, int excepts);
int
fesetexceptflag(fexcept_t *flagp, int excepts);

DESCRIPTION
These functions provide access to the floating-point status flags. The int input argument excepts for the functions represents a subset of floating-point exceptions, and can be either zero or the bitwise OR of one or more floating-point exception macros defined in <fenv.h>, for example FE_OVERFLOW | FE_INEXACT. For other argument values the behavior of these functions is undefined.

The feclearexcept() function attempts to clear the supported floating-point flags corresponding to the exceptions specified by its argument. It returns zero if excepts is zero or if the flags corresponding to all specified exceptions were successfully cleared. Otherwise, it returns a nonzero value.

The feraiseexcept() function attempts to raise the supported floating-point exceptions specified by its argument. Its effect is similar to that of arithmetic operations raising the same exceptions; if traps are enabled for the exceptions that are raised, they will be taken. The order in which these exceptions are raised is unspecified. On OS X and iOS, raising overflow or underflow using this function will additionally raise the inexact exception.

The feraiseexcept() function returns zero if excepts is zero or if the specified exceptions were successfully raised. Otherwise a nonzero value is returned.

The fetestexcept() function determines if any of the floating-point flags corresponding to the exceptions specified by its argument are currently set. It returns the bitwise OR of the floating-point exception macros corresponding to the currently set flags indicated by excepts. For example, if the underflow and inexact flags are set in the floating-point environment, the result of fetestexcept(FE_INEXACT | FE_INVALID) will be FE_INEXACT.

The fegetexceptflag() function attempts to store an implementation-defined representation of the states of the floating-point status flags corresponding to the exceptions specified by excepts in the object pointed to by the argument flagp. It returns zero if the representation is successfully stored, and a nonzero value otherwise.

The fesetexceptflag() function attempts to set the floating-point status flags corresponding to the exceptions specified by excepts to the states stored in the object pointed to by flagp. This function does not raise floating-point exceptions--it only sets the state of the flags. The value of *flagp shall have been set by a previous call to fegetexceptflag() whose second argument represented a superset of the exceptions represented by excepts.

The fesetexceptflag() function returns zero if the excepts argument is zero or if all the specified flags were successfully set. Otherwise it returns a nonzero value.

SEE ALSO
fenv(3), fegetenv(3), fegetround(3), feholdexcept(3), fesetenv(3), fesetround(3), feupdateenv(3)

STANDARDS
These functions conform to ISO/IEC 9899:TC3.