fenv.h is the standard header providing access to the floating
point environment.
Exceptions
The following
exception flags expand to an integer value that is a power of 2.
| Flag
| Description
|
| FE_INEXACT
| Inexact result
|
| FE_DIVBYZERO
| Divide by zero
|
| FE_UNDERFLOW
| Underflow
|
| FE_OVERFLOW
| Overflow
|
| FE_INVALID
| Invalid operand or operation
|
| FE_ALL_EXCEPT
| ORs all of the above exceptions
|
Rounding Modes
The following rounding modes
each expand to a unique, positive constant of type int.
| Mode
| Description
|
| FE_TONEAREST
| Round to nearest value.
|
| FE_UPWARD
| Round toward positive infinity.
|
| FE_DOWNWARD
| Round toward negative infinity.
|
| FE_TOWARDZERO
| Round toward zero; drop fraction.
|
Precision Modes
The following
precision modes each expands to a unique constant of type int.
| Mode
| Description
|
| FE_FLTPREC
| Use float (32-bit) precision
|
| FE_DBLPREC
| Use double (64-bit) precision
|
| FE_LDBLPREC
| Use long double (80-bit) precision
|
- Header
- fenv.h
- Prototype
- void feclearexcept(int excepts);
- Description
- Clears the exceptions specified by excepts.
- Compatibility
-
C99 7.6.2.1
- See Also
-
feraiseexcept
- Header
- fenv.h
- Prototype
- void fegetexceptflag(fexcept_t *flagp, int excepts);
- Description
- Stores (in the structure pointed to by flagp) an implementation-specific
representation of the exception flags specified by excepts.
Type fexcept_t represents an exception flag.
- Compatibility
- C99 7.6.2.2
- See Also
- fesetexceptflag
- Header
- fenv.h
- Prototype
- int feraiseexcept(int excepts);
- Description
- Raises the exceptions specified by excepts.
- Return Value
- Returns a non-zero value if all exceptions specified by excepts are
valid; otherwise, the return value is 0.
- Compatibility
- C99 7.6.2.3
- See Also
- feclearexcept
- Header
- fenv.h
- Prototype
- void fesetexceptflag(const fexcept_t *flagp, int excepts);
- Description
- Sets the implementation-specific exception flags (from the structure
pointed to by flagp) with the exception flags specified
by excepts.
*flagp should have been set by a previous call to fegetexceptflag;
if not, the results are unpredictable.
Type fexcept_t represents an exception flag.
- Compatibility
- C99 7.6.2.4
- See Also
- fegetexceptflag
- Header
- fenv.h
- Prototype
- int fetestexcept(int excepts);
- Description
- Determines if any of the exceptions specified by
excepts have been raised.
- Return Value
- The bitwise OR of the exceptions corresponding to the currently-raised
exceptions specified by excepts. If none of the specified
exceptions is raised, the return value is zero.
- Compatibility
- C99 7.6.2.5
- See Also
- fegetenv
- Header
- fenv.h
- Prototype
- int fegetprec(void);
- Description
- Gets the current precision mode.
- Return Value
- The current precision mode.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fesetprec
- Header
- fenv.h
- Prototype
- int fesetprec(int prec);
- Description
- Sets the precision mode to the value
specified by prec.
Precision mode has meaning only when inline coprocessor instructions are
used; there is no affect without a coprocessor.
When the program begins, the precision mode is FE_LDBLPREC.
- Return Value
- If prec is not one of the precision modes,
fesetprec returns 0. Otherwise, it returns a non-zero value.
- Compatibility
- DOS Windows 3.x Phar Lap DOSX Win32
- See Also
- fegetprec
- Header
- fenv.h
- Prototype
- int fegetround(void);
- Description
- Gets the current rounding mode.
The value FLT_ROUNDS, declared in float.h, also evaluates to the
current rounding mode.
- Return Value
- One of the rounding constants defined above.
- Compatibility
- C99 7.6.3.1
- See Also
- fesetround
- Header
- fenv.h
- Prototype
- int fesetround(int round);
- Description
- Sets the rounding mode.
The previous rounding mode is forgotten.
- Return Value
- Non-zero if successful; zero if invalid value given for round.
- Compatibility
- C99 7.6.3.2
- See Also
- fegetround
- Header
- fenv.h
- Prototype
- void fegetenv(fenv_t *envp);
- Description
- Copies the current floating-point environment
(rounding mode,
precision mode, and
exceptions) into the buffer pointed to by envp.
- Compatibility
- C99 7.6.4.1
- See Also
- fesetenv
- Header
- fenv.h
- Prototype
- int feholdexcept(fenv_t *envp);
- Description
- Copies the current floating-point environment
(rounding mode,
precision mode, and
exceptions) into the buffer pointed to by envp,
and resets the floating-point environment to the start-up state (round
to nearest, no loss in precision, and no exceptions set).
- Return Value
- 0 if successful, non-zero if not.
- Compatibility
- C99 7.6.4.2
- See Also
- feupdateenv
- Header
- fenv.h
- Prototype
- void fesetenv(const fenv_t *envp);
- Description
- Sets the current floating-point environment (rounding mode,
precision mode, and exceptions) to the values stored in the buffer
pointed to by envp.
- Compatibility
- C99 7.6.4.3
- See Also
- fegetenv
- Header
- fenv.h
- Prototype
- void feupdateenv(const fenv_t * envp);
- Description
- Saves the current exceptions internally,
sets the floating-point
environment to the values stored in the buffer pointed to by envp,
and then raises the saved exceptions.
- Compatibility
- C99 7.6.4.4
- See Also
- feholdexcept