Mathematical Library Functions feupdateenv(3M)
NAME
feupdateenv - update floating-point environment
SYNOPSIS
c99 [ flag... ] file... -lm [ library... ]
#include
int feupdateenv(const fenvt *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 then
attempts to raise the saved floating-point exceptions. The
envp argument points to an object set by a call to
fegetenv(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.
ERORS
No errors are defined.
EXAMPLES
The following example demonstrates sample code to hide
spurious underflow floating-point exceptions:
Example 1 Hide spurious underflow floating-point exceptions.
#include
double f(double x)
{
# pragma STDC FENVACES ON
double result;
fenvt saveenv;
feholdexcept(&saveenv);
/ compute result
if (/* test spurious underflow */)
feclearexcept(FEUNDERFLOW);
feupdateenv(&saveenv);
return result;
}
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
SunOS 5.11 Last change: 12 Jul 2006 1
Mathematical Library Functions feupdateenv(3M)
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard
MT-Level MT-Safe
SEE ALSO
fegetenv(3M), feholdexcept(3M), fenv.h(3HEAD), attri-
butes(5), standards(5)
NOTES
In a multithreaded program, the feupdateenv() function
affects the floating point environment only for the calling
thread.
When the FEXCUSTOM 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 in
fexsethandling(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 a
SIGFPE handler or control the trap enable mode bits indepen-
dently, the resulting behavior is not defined.
As described in fexsethandling(3M), when a handling func-
tion installed in FEXCUSTOM mode is invoked, all exception
traps are disabled (and will not be reenabled while SIGFPE
is blocked). Thus, attempting to change the environment from
within a handler by calling fesetenv(3M) or feupdateenv
might not produce the expected results.
SunOS 5.11 Last change: 12 Jul 2006 2
|