29 Numerics library [numerics]

29.4 The floating-point environment [cfenv]

29.4.1 Header <cfenv> synopsis [cfenv.syn]

#define FE_ALL_EXCEPT see below
#define FE_DIVBYZERO see below
#define FE_INEXACT see below
#define FE_INVALID see below
#define FE_OVERFLOW see below
#define FE_UNDERFLOW see below

#define FE_DOWNWARD see below
#define FE_TONEAREST see below
#define FE_TOWARDZERO see below
#define FE_UPWARD see below

#define FE_DFL_ENV see below

namespace std {
  // types
  using fenv_t    = object type;
  using fexcept_t = integer type;

  // functions
  int feclearexcept(int except);
  int fegetexceptflag(fexcept_t* pflag, int except);
  int feraiseexcept(int except);
  int fesetexceptflag(const fexcept_t* pflag, int except);
  int fetestexcept(int except);

  int fegetround();
  int fesetround(int mode);

  int fegetenv(fenv_t* penv);
  int feholdexcept(fenv_t* penv);
  int fesetenv(const fenv_t* penv);
  int feupdateenv(const fenv_t* penv);
}

Содержание и значение заголовка <cfenv> такие же , как заголовок стандартной библиотеки C <fenv.h>. [ Note: Этот международный стандарт не требует реализации для поддержки FENV_­ACCESS прагмы; это определяется реализацией ([cpp.pragma]), поддерживается ли прагма. Как следствие, это определяется реализацией, могут ли эти функции использоваться для проверки флагов состояния с плавающей запятой, установки режимов управления с плавающей запятой или работы с нестандартными настройками режима. Если прагма используется для включения управления средой с плавающей запятой, этот международный стандарт не определяет влияние на вычисление с плавающей запятой в константных выражениях. ]end note

Среда с плавающей запятой имеет thread storage duration. Начальное состояние для среды с плавающей запятой потока - это состояние среды с плавающей запятой того потока, который конструирует соответствующий thread object объект во время создания объекта. [ Note: То есть дочерний поток получает состояние с плавающей запятой родительского потока во время создания дочернего потока. ] end note

Для каждого потока должна поддерживаться отдельная среда с плавающей запятой. Каждая функция обращается к среде, соответствующей ее вызывающему потоку.

См. Также: ISO C 7.6