- fenv.h
-
Стандартная библиотека
языка программирования Сfenv.h — заголовочный файл стандартной библиотеки языка Си, содержащий объявление типов данных для работы с числами с плавающей запятой.[1]
Содержание
Типы данных
Заголовочный файл объявляет типы fenv_t и fexcept_t.[1] Тип
fenv_t
предоставляет окружение для работы с числами с плавающей запятой. Оно работает с флагами состояния для работы с числами с плавающей запятой и управляет платформо-зависимыми режимами.[1]Макрос
Заголовочный файл объявляет следующие константы:[1]
FE_DIVBYZERO
FE_INEXACT
FE_INVALID
FE_OVERFLOW
FE_UNDERFLOW
FE_ALL_EXCEPT
FE_DOWNWARD
FE_TONEAREST
FE_TOWARDZERO
FE_UPWARD
FE_DFL_ENV
Макрос
FE_ALL_EXCEPT
определена если одновременно определены следующие константы:FE_DIVBYZERO
,FE_INEXACT
,FE_INVALID
,FE_OVERFLOW
,FE_UNDERFLOW
.Макросы
FE_DOWNWARD
,FE_TONEAREST
,FE_TOWARDZERO
,FE_UPWARD
определены если платформа поддерживает получение и изменение направления округления в терминах функцийfegetround()
иfesetround()
.Макрос
FE_DFL_ENV
представляет умалчиваемое окружение вычислений с плавающей точкой.Функции
Исключения
#include <fenv.h> int feclearexcept(int excepts); int fegetexceptflag(fexcept_t *flagp, int excepts); int feraiseexcept(int excepts); int fesetexceptflag(const fexcept_t *flagp, int excepts); int fetestexcept(int excepts);
Перечисленные функции сбрасывают флаги исключений (
feclearexcept
) и устанавливают их (feraiseexcept
), записывают (fesetexceptflag
) и получают (fegetexceptflag
) машинно-зависимые флаги состояний и производят проверку установки флагов (fetestexcept
).Округление
#include <fenv.h> int fegetround(void); int fesetround(int round);
Функции получают и устанавливают макрос, отвечающий за направление округления.
Поддержка окружения
#include <fenv.h> int feholdexcept(fenv_t *envp); int feholdexcept(fenv_t *envp); int fesetenv(const fenv_t *envp); int feupdateenv(const fenv_t *envp);
Функции получают окружение для вычислений с плавающей точкой, сохраняют его в переменной, устанавливают новое значение и обновляют его соответственно.
Директивы компилятора
#include <fenv.h> #pragma STDC FENV_ACCESS on-off-switch
Директива сообщает окружению (или компилятору), что эта часть кода обращается к платформо-зависимым флагам состояния для операций с типом
float
.[2]Пример:
#include <fenv.h> void f (double x) { #pragma STDC FENV_ACCESS ON void g (double); void h (double); /*...*/ g(x+1); h(x+1); /*...*/ }
Поведение функции
g
иh
может зависеть от флагов состояния или побочных эффектов от операций x+1.[2]Примечания
Категория:- Стандартные библиотечные заголовки языка Си
Wikimedia Foundation. 2010.