Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      feupdateenv

      From cppreference.com
      <c‎ |numeric‎ |fenv
       
       
       
       
      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

      [edit]Parameters

      envp - pointer to the object of typefenv_t set by an earlier call tofeholdexcept orfegetenv or equal toFE_DFL_ENV

      [edit]Return value

      0 on success, non-zero otherwise.

      [edit]Example

      Run this code
      #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

      [edit]References

      • C11 standard (ISO/IEC 9899:2011):
      • 7.6.4.4 The feupdateenv function (p: 214-215)
      • C99 standard (ISO/IEC 9899:1999):
      • 7.6.4.4 The feupdateenv function (p: 195-196)

      [edit]See also

      saves the environment, clears all status flags and ignores all future errors
      (function)[edit]
      saves or restores the current floating-point environment
      (function)[edit]
      default floating-point environment
      (macro constant)[edit]
      C++ documentation forfeupdateenv
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/fenv/feupdateenv&oldid=133800"

      [8]ページ先頭

      ©2009-2025 Movatter.jp