Namespaces
Variants
Views
Actions

Difference between revisions of "c/numeric/fenv"

From cppreference.com
< c‎ | numeric
m (-C89)
m (fmt)
 
(2 intermediate revisions by 2 users not shown)
Line 4: Line 4:
 
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 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 {{tt|#pragma}} explicitly, but most compilers allow meaningful access to the floating-point environment anyway.
+
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 begin}}
{{dsc header | fenv.h}}
+
{{dsc header|fenv.h}}
{{dsc | {{c|fenv_t}} | The type representing the entire floating-point environment | notes={{mark c99}}}}
+
{{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|{{c|fexcept_t}}|The type representing all floating-point status flags collectively|notes={{mark c99}}}}
 
{{dsc end}}
 
{{dsc end}}
  
 
===Functions===
 
===Functions===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc inc | c/numeric/fenv/dsc feclearexcept}}
+
{{dsc inc|c/numeric/fenv/dsc feclearexcept}}
{{dsc inc | c/numeric/fenv/dsc fetestexcept}}
+
{{dsc inc|c/numeric/fenv/dsc fetestexcept}}
{{dsc inc | c/numeric/fenv/dsc feraiseexcept}}
+
{{dsc inc|c/numeric/fenv/dsc feraiseexcept}}
{{dsc inc | c/numeric/fenv/dsc feexceptflag}}
+
{{dsc inc|c/numeric/fenv/dsc feexceptflag}}
{{dsc inc | c/numeric/fenv/dsc feround}}
+
{{dsc inc|c/numeric/fenv/dsc feround}}
{{dsc inc | c/numeric/fenv/dsc feenv}}
+
{{dsc inc|c/numeric/fenv/dsc feenv}}
{{dsc inc | c/numeric/fenv/dsc feholdexcept}}
+
{{dsc inc|c/numeric/fenv/dsc feholdexcept}}
{{dsc inc | c/numeric/fenv/dsc feupdateenv}}
+
{{dsc inc|c/numeric/fenv/dsc feupdateenv}}
 
{{dsc end}}
 
{{dsc end}}
  
 
===Macros===
 
===Macros===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc inc | c/numeric/fenv/dsc FE_exceptions}}
+
{{dsc inc|c/numeric/fenv/dsc FE_exceptions}}
{{dsc inc | c/numeric/fenv/dsc FE_round}}
+
{{dsc inc|c/numeric/fenv/dsc FE_round}}
{{dsc inc | c/numeric/fenv/dsc FE_DFL_ENV}}
+
{{dsc inc|c/numeric/fenv/dsc FE_DFL_ENV}}
 
{{dsc end}}
 
{{dsc end}}
  
 
===References===
 
===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 c11}}
{{ref std | section=7.6 | title=Floating-point environment <fenv.h> | p=206-215}}
+
{{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 c99}}
{{ref std | section=7.6 | title=Floating-point environment <fenv.h> | p=187-196}}
+
{{ref std|section=7.6|title=Floating-point environment <fenv.h>|p=187-196}}
 
{{ref std end}}
 
{{ref std end}}
  
 
===See also===
 
===See also===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc see cpp | cpp/numeric/fenv | Floating-point environment}}
+
{{dsc see cpp|cpp/numeric/fenv|Floating-point environment}}
 
{{dsc end}}
 
{{dsc end}}
  
[[ar:c/numeric/fenv]]
+
{{langlinks|ar|cs|de|es|fr|it|ja|ko|pl|pt|ru|tr|zh}}
[[cs:c/numeric/fenv]]
+
[[de:c/numeric/fenv]]
+
[[es:c/numeric/fenv]]
+
[[fr:c/numeric/fenv]]
+
[[it:c/numeric/fenv]]
+
[[ja:c/numeric/fenv]]
+
[[ko:c/numeric/fenv]]
+
[[pl:c/numeric/fenv]]
+
[[pt:c/numeric/fenv]]
+
[[ru:c/numeric/fenv]]
+
[[tr:c/numeric/fenv]]
+
[[zh:c/numeric/fenv]]
+

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

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]
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 raise exceptions
(function) [edit]

[edit] Macros

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

[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