FEGETENV(3) | Library Functions Manual | FEGETENV(3)

# NAME

`fegetenv`, `feholdexcept`, `fesetenv`, `feupdateenv` —
floating-point environment save and restore

# LIBRARY

Math Library (libm, -lm)

# SYNOPSIS

`#include <fenv.h>`

`#pragma STDC FENV_ACCESS ON`

int
`fegetenv`(fenv_t *envp);

int
`feholdexcept`(fenv_t *envp);

int
`fesetenv`(const fenv_t *envp);

int
`feupdateenv`(const fenv_t *envp);

# DESCRIPTION

The floating-point environment includes exception flags and masks, the current rounding mode, and other architecture-specific settings. However, it does not include the floating-point register file.

The `fegetenv`() function stores the current floating-point environment in the object pointed to by envp, whereas `feholdexcept`() saves the current environment, then clears all exception flags and masks all floating-point exceptions.

The `fesetenv`() function restores a previously saved environment. The `feupdateenv`() function restores a saved environment as well, but it also raises any exceptions that were set in the environment it replaces.

The `feholdexcept`() function is often used with `feupdateenv`() or `fesetenv`() to suppress spurious exceptions that occur as a result of intermediate computations. An example in fenv(3) demonstrates how to do this.

# RETURN VALUES

The `fegetenv`(), `feholdexcept`(), `fesetenv`(), and `feupdateenv`() functions return 0 if they succeed, and non-zero otherwise.

# SEE ALSO

feclearexcept(3), fenv(3), feraiseexcept(3), fesetenv(3), fetestexcept(3), fpgetmask(3), fpsetmask(3)

# STANDARDS

The `fegetenv`(), `feholdexcept`(), `fesetenv`(), and `feupdateenv`() functions conform to ISO/IEC 9899:1999 (“ISO C99”).

# HISTORY

These routines first appeared in FreeBSD 5.3 and NetBSD 6.0.

May 8, 2004 | NetBSD 9.0