Mathematical Library Functions feupdateenv(3M)
NAME
feupdateenv - update floating-point environment
SYNOPSIS
c99 [ flag... ] file... -lm [ library... ]
#include
int feupdateenv(const fenv_t *envp);
DESCRIPTION
The feupdateenv() function attempts to save the currently
raised floating-point exceptions in its automatic storage,
attempts to install the floating-point environment
represented by the object pointed to by envp, and thenattempts to raise the saved floating-point exceptions. The
envp argument points to an object set by a call tofegetenv(3M) or feholdexcept(3M), or equals a floating-point
environment macro.RETURN VALUES
The feupdateenv() function returns 0 if and only if all the
required actions were successfully carried out.ERRORS
No errors are defined.EXAMPLES
The following example demonstrates sample code to hidespurious underflow floating-point exceptions:
Example 1 Hide spurious underflow floating-point exceptions.
#include
double f(double x) {# pragma STDC FENV_ACCESS ON
double result;fenv_t save_env;
feholdexcept(&save_env);
// compute result if (/* test spurious underflow */)feclearexcept(FE_UNDERFLOW);
feupdateenv(&save_env);
return result; }ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:SunOS 5.11 Last change: 12 Jul 2006 1
Mathematical Library Functions feupdateenv(3M)
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | MT-Safe |
|_____________________________|_____________________________|
| Standard | See standards(5). ||_____________________________|_____________________________|
SEE ALSO
fegetenv(3M), feholdexcept(3M), fenv.h(3HEAD), attri-
butes(5), standards(5) NOTESIn a multithreaded program, the feupdateenv() function
affects the floating point environment only for the calling thread.When the FEX_CUSTOM handling mode is in effect for an excep-
tion, raising that exception using feupdateenv() causes the
handling function to be invoked. The handling function can then modify the exception flags to be set as described infex_set_handling(3M). Any result value the handler supplies
will be ignored.The feupdateenv() function automatically installs and dein-
stalls SIGFPE handlers and sets and clears the trap enable mode bits in the floating point status register as needed. If a program uses these functions and attempts to install aSIGFPE handler or control the trap enable mode bits indepen-
dently, the resulting behavior is not defined.As described in fex_set_handling(3M), when a handling func-
tion installed in FEX_CUSTOM mode is invoked, all exception
traps are disabled (and will not be reenabled while SIGFPE is blocked). Thus, attempting to change the environment fromwithin a handler by calling fesetenv(3M) or feupdateenv
might not produce the expected results.SunOS 5.11 Last change: 12 Jul 2006 2