- fenv.h
-
Стандартная библиотека
языка программирования Сfenv.h — заголовочный файл стандартной библиотеки языка Си, содержащий объявление типов данных для работы с числами с плавающей запятой.[1]
Содержание
Типы данных
Заголовочный файл объявляет типы fenv_t и fexcept_t.[1] Тип
fenv_tпредоставляет окружение для работы с числами с плавающей запятой. Оно работает с флагами состояния для работы с числами с плавающей запятой и управляет платформо-зависимыми режимами.[1]Макрос
Заголовочный файл объявляет следующие константы:[1]
FE_DIVBYZEROFE_INEXACTFE_INVALIDFE_OVERFLOWFE_UNDERFLOWFE_ALL_EXCEPTFE_DOWNWARDFE_TONEARESTFE_TOWARDZEROFE_UPWARDFE_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.