Difference between revisions of "c/numeric/fenv"
m (Text replace - "{{tdcl list end" to "{{dcl list end") |
m (fmt) |
||
(13 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | {{title|Floating point environment}} | + | {{title|Floating-point environment}} |
− | {{c/numeric/fenv/ | + | {{c/numeric/fenv/navbar}} |
− | {{ | + | 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 {{ltt|cpp/preprocessor/impl|#pragma STDC FENV_ACCESS}} is set to {{tt|ON}}. 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, and IBM XL, support the {{c/core|#pragma}} explicitly, but most compilers allow meaningful access to the floating-point environment anyway. | ||
===Types=== | ===Types=== | ||
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc header|fenv.h}} |
− | {{ | + | {{dsc|{{c|fenv_t}}|The type representing the entire floating-point environment|notes={{mark c99}}}} |
− | {{ | + | {{dsc|{{c|fexcept_t}}|The type representing all floating-point status flags collectively|notes={{mark c99}}}} |
− | {{ | + | {{dsc end}} |
+ | |||
===Functions=== | ===Functions=== | ||
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc feclearexcept}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc fetestexcept}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc feraiseexcept}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc feexceptflag}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc feround}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc feenv}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc feholdexcept}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc feupdateenv}} |
− | {{ | + | {{dsc end}} |
===Macros=== | ===Macros=== | ||
− | {{ | + | {{dsc begin}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc FE_exceptions}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc FE_round}} |
− | {{ | + | {{dsc inc|c/numeric/fenv/dsc FE_DFL_ENV}} |
− | {{ | + | {{dsc end}} |
+ | |||
+ | ===References=== | ||
+ | {{ref std c23}} | ||
+ | {{ref std|section=7.6|title=Floating-point environment <fenv.h>|p=TBD}} | ||
+ | {{ref std|section=7.31.4|title=Floating-point environment <fenv.h>|p=TBD}} | ||
+ | {{ref std end}} | ||
+ | {{ref std c17}} | ||
+ | {{ref std|section=7.6|title=Floating-point environment <fenv.h>|p=150-156}} | ||
+ | {{ref std|section=7.31.4|title=Floating-point environment <fenv.h>|p=332}} | ||
+ | {{ref std end}} | ||
+ | {{ref std c11}} | ||
+ | {{ref std|section=7.6|title=Floating-point environment <fenv.h>|p=206-215}} | ||
+ | {{ref std|section=7.31.4|title=Floating-point environment <fenv.h>|p=455}} | ||
+ | {{ref std end}} | ||
+ | {{ref std c99}} | ||
+ | {{ref std|section=7.6|title=Floating-point environment <fenv.h>|p=187-196}} | ||
+ | {{ref std end}} | ||
+ | |||
+ | ===See also=== | ||
+ | {{dsc begin}} | ||
+ | {{dsc see cpp|cpp/numeric/fenv|Floating-point environment}} | ||
+ | {{dsc end}} | ||
− | {{ | + | {{langlinks|ar|cs|de|es|fr|it|ja|ko|pl|pt|ru|tr|zh}} |
Latest revision as of 08:02, 2 December 2023
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 set to ON
. 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, and IBM XL, support the #pragma explicitly, but most compilers allow meaningful access to the floating-point environment anyway.
Contents |
[edit] Types
Defined in header
<fenv.h> | |
fenv_t | The type representing the entire floating-point environment |
fexcept_t | The type representing all floating-point status flags collectively |
[edit] Functions
(C99) |
clears the specified floating-point status flags (function) |
(C99) |
determines which of the specified floating-point status flags are set (function) |
(C99) |
raises the specified floating-point exceptions (function) |
(C99)(C99) |
copies the state of the specified floating-point status flags from or to the floating-point environment (function) |
(C99)(C99) |
gets or sets rounding direction (function) |
(C99) |
saves or restores the current floating-point environment (function) |
(C99) |
saves the environment, clears all status flags and ignores all future errors (function) |
(C99) |
restores the floating-point environment and raises the previously raise exceptions (function) |
[edit] Macros
floating-point exceptions (macro constant) | |
floating-point rounding direction (macro constant) | |
(C99) |
default floating-point environment (macro constant) |
[edit] References
- C23 standard (ISO/IEC 9899:2024):
- 7.6 Floating-point environment <fenv.h> (p: TBD)
- 7.31.4 Floating-point environment <fenv.h> (p: TBD)
- C17 standard (ISO/IEC 9899:2018):
- 7.6 Floating-point environment <fenv.h> (p: 150-156)
- 7.31.4 Floating-point environment <fenv.h> (p: 332)
- C11 standard (ISO/IEC 9899:2011):
- 7.6 Floating-point environment <fenv.h> (p: 206-215)
- 7.31.4 Floating-point environment <fenv.h> (p: 455)
- C99 standard (ISO/IEC 9899:1999):
- 7.6 Floating-point environment <fenv.h> (p: 187-196)
[edit] See also
C++ documentation for Floating-point environment
|