Namespaces
Variants
Views
Actions

Difference between revisions of "c/numeric/fenv"

From cppreference.com
< c‎ | numeric
m (r2.7.3) (Robot: Adding de, es, fr, it, ja, pt, ru, zh)
m (fmt)
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{title|Floating point environment}}
+
{{title|Floating-point environment}}
 
{{c/numeric/fenv/navbar}}
 
{{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 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 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===
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list header | fenv.h}}
+
{{dsc header|fenv.h}}
{{dcl list item | {{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}}}}
{{dcl list item | {{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}}}}
{{dcl list end}}
+
{{dsc end}}
  
 
===Functions===
 
===Functions===
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list template | c/numeric/fenv/dcl list feclearexcept}}
+
{{dsc inc|c/numeric/fenv/dsc feclearexcept}}
{{dcl list template | c/numeric/fenv/dcl list fetestexcept}}
+
{{dsc inc|c/numeric/fenv/dsc fetestexcept}}
{{dcl list template | c/numeric/fenv/dcl list feraiseexcept}}
+
{{dsc inc|c/numeric/fenv/dsc feraiseexcept}}
{{dcl list template | c/numeric/fenv/dcl list feexceptflag}}
+
{{dsc inc|c/numeric/fenv/dsc feexceptflag}}
{{dcl list template | c/numeric/fenv/dcl list feround}}
+
{{dsc inc|c/numeric/fenv/dsc feround}}
{{dcl list template | c/numeric/fenv/dcl list feenv}}
+
{{dsc inc|c/numeric/fenv/dsc feenv}}
{{dcl list template | c/numeric/fenv/dcl list feholdexcept}}
+
{{dsc inc|c/numeric/fenv/dsc feholdexcept}}
{{dcl list template | c/numeric/fenv/dcl list feupdateenv}}
+
{{dsc inc|c/numeric/fenv/dsc feupdateenv}}
{{dcl list end}}
+
{{dsc end}}
  
 
===Macros===
 
===Macros===
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list template | c/numeric/fenv/dcl list FE_exceptions}}
+
{{dsc inc|c/numeric/fenv/dsc FE_exceptions}}
{{dcl list template | c/numeric/fenv/dcl list FE_round}}
+
{{dsc inc|c/numeric/fenv/dsc FE_round}}
{{dcl list template | c/numeric/fenv/dcl list FE_DFL_ENV}}
+
{{dsc inc|c/numeric/fenv/dsc FE_DFL_ENV}}
{{dcl list end}}
+
{{dsc end}}
  
{{todo|FENV_ACCESS}}
+
===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}}
  
[[de:c/numeric/fenv]]
+
===See also===
[[es:c/numeric/fenv]]
+
{{dsc begin}}
[[fr:c/numeric/fenv]]
+
{{dsc see cpp|cpp/numeric/fenv|Floating-point environment}}
[[it:c/numeric/fenv]]
+
{{dsc end}}
[[ja:c/numeric/fenv]]
+
 
[[pt:c/numeric/fenv]]
+
{{langlinks|ar|cs|de|es|fr|it|ja|ko|pl|pt|ru|tr|zh}}
[[ru: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