Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Floating-point environment(since C++11)

      From cppreference.com
      <cpp‎ |numeric
       
       
       
      Floating-point environment
      Functions
      (C++11)(C++11)
      (C++11)(C++11)
      Macro constants
      (C++11)
       

      The floating-point environment is the set of floating-point status flags and control modes supported by the implementation. It is thread-local. Each thread inherits the initial state of its floating-point environment from the parent thread. Floating-point operations modify the floating-point status flags to indicate abnormal results or auxiliary information. The state of floating-point control modes affects the outcomes of some floating-point operations.

      The floating-point environment access and modification is only meaningful when#pragma STDC FENV_ACCESS is supported and is set toON. Otherwise the implementation is free to assume that floating-point control modes are always the default ones and that floating-point status flags are never tested or modified. In practice, few current compilers, such as HP aCC, Oracle Studio, or IBM XL, support the#pragma explicitly, but most compilers allow meaningful access to the floating-point environment anyway.

      Contents

      [edit]Types

      Defined in header<cfenv>
      fenv_t
      (C++11)
      the type representing the entire floating-point environment
      (typedef)[edit]
      fexcept_t
      (C++11)
      the type representing all floating-point status flags collectively
      (typedef)[edit]

      [edit]Functions

      clears the specified floating-point status flags
      (function)[edit]
      determines which of the specified floating-point status flags are set
      (function)[edit]
      raises the specified floating-point exceptions
      (function)[edit]
      copies the state of the specified floating-point status flags from or to the floating-point environment
      (function)[edit]
      (C++11)(C++11)
      gets or sets rounding direction
      (function)[edit]
      saves or restores the current floating-point environment
      (function)[edit]
      saves the environment, clears all status flags and ignores all future errors
      (function)[edit]
      restores the floating-point environment and raises the previously raised exceptions
      (function)[edit]

      [edit]Macros

      floating-point exceptions
      (macro constant)[edit]
      floating-point rounding direction
      (macro constant)[edit]
      (C++11)
      default floating-point environment
      (macro constant)[edit]

      [edit]Notes

      The floating-point exceptions are not related to the C++ exceptions. When a floating-point operation raises a floating-point exception, the status of the floating-point environment changes, which can be tested withstd::fetestexcept, but the execution of a C++ program on most implementations continues uninterrupted.

      There are compiler extensions that may be used to generate C++ exceptions automatically whenever a floating-point exception is raised:

      • GNU libc functionfeenableexcept() enables trapping of the floating-point exceptions, which generates the signalSIGFPE. If the compiler option-fnon-call-exceptions was used, the handler for that signal may throw a user-defined C++ exception.
      • MSVC function_control87() enables trapping of the floating-point exceptions, which generates a hardware exception, which can be converted to C++ exceptions with_set_se_translator.

      [edit]See also

      C documentation forFloating-point environment
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/fenv&oldid=178806"

      [8]ページ先頭

      ©2009-2025 Movatter.jp