| Functions | ||||
(C99) | ||||
(C99) | ||||
(C99) | ||||
(C99)(C99) | ||||
(C99)(C99) | ||||
(C99) | ||||
(C99) | ||||
feupdateenv (C99) | ||||
| Macro constants | ||||
(C99) |
Defined in header <fenv.h> | ||
int feupdateenv(const fenv_t* envp); | (since C99) | |
First, remembers the currently raised floating-point exceptions, then restores the floating-point environment from the object pointed to byenvp (similar tofesetenv), then raises the floating-point exceptions that were saved.
This function may be used to end the non-stop mode established by an earlier call tofeholdexcept.
Contents |
| envp | - | pointer to the object of typefenv_t set by an earlier call tofeholdexcept orfegetenv or equal toFE_DFL_ENV |
0 on success, non-zero otherwise.
#include <stdio.h>#include <fenv.h>#include <float.h> #pragma STDC FENV_ACCESS ON void show_fe_exceptions(void){printf("current exceptions raised: ");if(fetestexcept(FE_DIVBYZERO))printf(" FE_DIVBYZERO");if(fetestexcept(FE_INEXACT))printf(" FE_INEXACT");if(fetestexcept(FE_INVALID))printf(" FE_INVALID");if(fetestexcept(FE_OVERFLOW))printf(" FE_OVERFLOW");if(fetestexcept(FE_UNDERFLOW))printf(" FE_UNDERFLOW");if(fetestexcept(FE_ALL_EXCEPT)==0)printf(" none");printf("\n");} double x2(double x)/* times two */{ fenv_t curr_excepts; /* Save and clear current f-p environment. */feholdexcept(&curr_excepts); /* Raise inexact and overflow exceptions. */printf("In x2(): x = %f\n", x=x*2.0); show_fe_exceptions();feclearexcept(FE_INEXACT);/* hide inexact exception from caller */ /* Merge caller's exceptions (FE_INVALID) *//* with remaining x2's exceptions (FE_OVERFLOW). */ feupdateenv(&curr_excepts);return x;} int main(void){feclearexcept(FE_ALL_EXCEPT);feraiseexcept(FE_INVALID);/* some computation with invalid argument */ show_fe_exceptions();printf("x2(DBL_MAX) = %f\n", x2(DBL_MAX)); show_fe_exceptions(); return0;}
Output:
current exceptions raised: FE_INVALIDIn x2(): x = infcurrent exceptions raised: FE_INEXACT FE_OVERFLOWx2(DBL_MAX) = infcurrent exceptions raised: FE_INVALID FE_OVERFLOW
(C99) | saves the environment, clears all status flags and ignores all future errors (function)[edit] |
(C99) | saves or restores the current floating-point environment (function)[edit] |
(C99) | default floating-point environment (macro constant)[edit] |
C++ documentation forfeupdateenv | |