Пространства имён
Варианты
Действия

Среда вещественной арифметики

Материал из cppreference.com
< cpp‎ | numeric
 
 
 
Среда вещественной арифметики
Функции
(C++11)(C++11)
(C++11)(C++11)
Макро-константы
(C++11)
 

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

Доступ и изменение среды вещественной арифметики имеют смысл только тогда, когда поддерживается #pragma STDC FENV_ACCESS и установлена в ON. В противном случае реализация может предполагать, что режимы управления вещественной арифметикой всегда являются режимами по умолчанию и что флаги состояния вещественной арифметики никогда не тестируются и не изменяются. На практике некоторые современные компиляторы, такие как HP aCC, Oracle Studio или IBM XL, явно поддерживают #pragma, но большинство компиляторов всё равно разрешают осмысленный доступ к среде вещественной арифметики.

Содержание

[править] Типы

Определены в заголовочном файле <cfenv>
fenv_t Тип, представляющий всю среду вещественной арифметики
fexcept_t Тип, представляющий все флаги состояния среды вещественной арифметики

[править] Функции

очищает указанные флаги состояния среды вещественной арифметики
(функция) [править]
определяет, какой из указанных флагов состояния вещественной арифметики установлен
(функция) [править]
вызывает указанные исключения вещественной арифметики
(функция) [править]
копирует состояние указанных флагов состояния из или в среду вещественной арифметики
(функция) [править]
(C++11)(C++11)
получает или устанавливает направление округления
(функция) [править]
сохраняет или восстанавливает текущую среду вещественной арифметики
(функция) [править]
сохраняет среду, очищает все флаги состояния и игнорирует все будущие ошибки
(функция) [править]
восстанавливает среду вещественной арифметики и вызывает ранее поднятые исключения
(функция) [править]

[править] Макросы

исключения вещественной арифметики
(макроконстанта) [править]
направление округления с плавающей запятой
(макроконстанта) [править]
среда вещественной арифметики по умолчанию
(макроконстанта) [править]

[править] Примечание

Исключения вещественной арифметики не связаны с исключениями C++. Когда операция с плавающей запятой вызывает исключение вещественной арифметики, состояние среды вещественной арифметики изменяется, что можно проверить с помощью std::fetestexcept, но выполнение программы C++ в большинстве реализаций продолжается непрерывно.

Существуют расширения компилятора, которые могут использоваться для автоматической генерации исключений C++ всякий раз, когда возникает исключение вещественной арифметики:

  • Функция GNU feenableexcept() включает перехват исключений вещественной арифметики, которые генерирует сигнал SIGFPE. Если использовалась опция компилятора -fnon-call-exceptions, обработчик этого сигнала может вызвать определяемое пользователем исключение C++.
  • Функция MSVC _control87() включает перехват исключений вещественной арифметики, которые создают аппаратные исключения, и которые могут быть преобразованы в исключения C++ с помощью _set_se_translator.

[править] Смотрите также

Документация C по Среда вещественной арифметики