Namespaces
Variants

Floating-point extensions part 1: binary floating-point arithmetic

From cppreference.net

Расширения для чисел с плавающей запятой для C - Часть 1: Двоичная арифметика с плавающей запятой, ISO/IEC TS 18661-1:2014, определяет следующие новые компоненты для стандартной библиотеки C, как рекомендовано ISO/IEC/IEEE 60559:2011 (текущая редакция IEEE-754)

__STDC_IEC_60559_BFP__
целочисленная константа типа long и значением 201ymmL , заменяет __STDC_IEC_559__
(макрос-константа)
__STDC_IEC_60559_COMPLEX__
целочисленная константа типа long и значением 201ymmL , заменяет __STDC_IEC_559_COMPLEX__
(макрос-константа)
Определено в заголовочном файле <limits.h>
CHAR_WIDTH SCHAR_WIDTH UCHAR_WIDTH SHRT_WIDTH USHRT_WIDTH INT_WIDTH UINT_WIDTH LONG_WIDTH ULONG_WIDTH LLONG_WIDTH ULLONG_WIDTH
(FP Ext 1 TS)
ширина, в битах, соответствующего типа
(макрос-константа)
Определено в заголовочном файле <float.h>
(FP Ext 1 TS)
преобразования между всеми поддерживаемыми бинарными типами с плавающей запятой и символьными последовательностями с не более чем CR_DECIMAL_DIG значащими десятичными цифрами выполняются с корректным округлением (это значение составляет не менее DECIMAL_DIG + 3)
(макрос-константа)
Определено в заголовочном файле <fenv.h>
femode_t
(FP Ext 1 TS)
набор динамических режимов управления числами с плавающей запятой, поддерживаемых реализацией, включая режим динамического направления округления
(typedef)
FE_DFL_MODE
(FP Ext 1 TS)
указатель на femode_t по умолчанию
(макроконстанта)
FE_SNANS_ALWAYS_SIGNAL
(FP Ext 1 TS)
определена (как целочисленная константа 1), если аргументы sNaN вызывают у функций, подавляющих qNaN, таких как hypot или fmax , генерацию FE_INVALID и возврат qNaN
(макрос-константа)
(FP Ext 1 TS)
устанавливает указанные флаги исключений с плавающей точкой без вызова побочных эффектов, которые могли бы возникнуть при их возбуждении
(функция)
(FP Ext 1 TS)
проверяет, содержатся ли заданные флаги в сохранённом представлении флагов исключений с плавающей точкой
(функция)
(FP Ext 1 TS)
получает и устанавливает все динамические режимы управления числами с плавающей точкой реализации коллективно
(функция)
Определено в заголовочном файле <stdint.h>
INTn_WIDTH UINTn_WIDTH INT_LEASTn_WIDTH UINT_LEASTn_WIDTH INT_FASTn_WIDTH UINT_FASTn_WIDTH INTPTR_WIDTH UINTPTR_WIDTH INTMAX_WIDTH UINTMAX_WIDTH PTRDIFF_WIDTH SIG_ATOMIC_WIDTH SIZE_WIDTH WCHAR_WIDTH WINT_WIDTH
(FP Ext 1 TS)
ширина, в битах, соответствующего типа
(макроконстанта)
Определено в заголовочном файле <stdlib.h>
преобразует одно число с плавающей точкой в строку, используя указанный формат snprintf
(функция)
Определено в заголовке <math.h>
FP_INT_UPWARD FP_INT_DOWNWARD FP_INT_TOWARDZERO FP_INT_TONEARESTFROMZERO FP_INT_TONEAREST
(FP Ext 1 TS)
направление округления для функций ceil, floor, trunc, round и roundeven, подходящее для использования с семейством функций fromfp
(макроконстанта)
FP_LLOGB0
(FP Ext 1 TS)
значение, возвращаемое llogb если аргумент равен нулю
(макроконстанта)
FP_LLOGBNAN
(FP Ext 1 TS)
значение, возвращаемое llogb если аргумент является NaN
(макроконстанта)
(FP Ext 1 TS)
представляет сигнальный NaN для float, double, long double соответственно
(макрос-константа)
FP_FAST_FADD FP_FAST_FADDL FP_FAST_DADDL FP_FAST_FSUB FP_FAST_FSUBL FP_FAST_DSUBL FP_FAST_FMUL FP_FAST_FMULL FP_FAST_DMULL FP_FAST_FDIV FP_FAST_FDIVL FP_FAST_DDIVL FP_FAST_FFMA FP_FAST_FFMAL FP_FAST_DFMAL FP_FAST_FSQRT FP_FAST_FSQRTL FP_FAST_DSQRTL
(FP Ext 1 TS)
если определено, указывает, что соответствующая функция выполняется быстрее, чем эквивалентная функция с большим типом с последующим приведением к целевому типу
(макрос-константа)
iseqsig
(FP Ext 1 TS)

(функция-макрос)
iscanonical
(FP Ext 1 TS)
проверяет, является ли значение с плавающей точкой каноническим
(макрос функции)
issignaling
(FP Ext 1 TS)
проверяет, является ли значение с плавающей точкой сигнальным NaN
(функция-макрос)
issubnormal
(FP Ext 1 TS)
проверяет, является ли значение с плавающей точкой субнормальным
(макрос функции)
iszero
(FP Ext 1 TS)
проверяет, является ли значение с плавающей точкой нулем (положительным, отрицательным, беззнаковым)
(макрос функции)
округление до знакового целого числа с использованием указанного направления округления
(функция)
округление до беззнакового целого числа с использованием указанного направления округления
(функция)
округлить до целого числа со знаком, используя указанное направление округления, с отчётом о неточности
(функция)
округляет до беззнакового целого числа, используя указанное направление округления, с отчётом о неточности
(функция)
округляет до ближайшего, при равном удалении - до чётного
(функция)
(FP Ext 1 TS)
эквивалентно logb за исключением того, что возвращаемый тип long
(функция)
возвращает значение аргумента с максимальной величиной
(функция)
возвращает значение аргумента с минимальной величиной
(функция)
возвращает следующее большее представимое значение с плавающей точкой
(функция)
возвращает следующее меньшее представимое значение с плавающей точкой
(функция)
(FP Ext 1 TS)
вычисляет x+y как будто с бесконечной точностью и округляет один раз до целевого типа
(функция)
(FP Ext 1 TS)
вычисляет x-y как если бы с бесконечной точностью и округлением один раз к целевому типу
(функция)
(FP Ext 1 TS)
вычисляет x*y как будто с бесконечной точностью и округляет один раз до целевого типа
(функция)
(FP Ext 1 TS)
вычисляет x/y как если бы с бесконечной точностью и округляет один раз до целевого типа
(функция)
(FP Ext 1 TS)
вычисляет то же, что и fma как если бы с бесконечной точностью и округлением один раз к целевому типу
(функция)
(FP Ext 1 TS)
вычисляет то же, что и sqrt как если бы с бесконечной точностью и округлением один раз к целевому типу
(функция)
упорядочивает два значения с плавающей точкой, используя отношение полного порядка ISO 60559
(функция)
упорядочивает величины двух значений с плавающей запятой, используя отношение полного порядка ISO 60559
(функция)
получает каноничное двоичное кодирование ISO 60559 для заданного значения с плавающей запятой
(функция)
извлекает полезную нагрузку из заданного значения NaN
(функция)
создает тихий NaN с указанным полезным содержимым
(функция)
создает сигнальный NaN с указанной полезной нагрузкой
(функция)
Определено в заголовочном файле <tgmath.h>
roundeven
(FP Ext 1 TS)
универсальная перегрузка roundeven
(функция)
llogb
(FP Ext 1 TS)
обобщённая перегрузка llogb
(функция)
fmaxmag
(FP Ext 1 TS)
универсальная перегрузка fmaxmag
(функция)
fminmag
(FP Ext 1 TS)
универсальная перегрузка fminmag
(функция)
nextup
(FP Ext 1 TS)
универсальная перегрузка nextup
(функция)
nextdown
(FP Ext 1 TS)
универсальная перегрузка nextdown
(функция)
fromfp
(FP Ext 1 TS)
универсальная перегрузка fromfp
(функция)
ufromfp
(FP Ext 1 TS)
универсальная перегрузка ufromfp
(функция)
fromfpx
(FP Ext 1 TS)
универсальная перегрузка fromfpx
(функция)
ufromfpx
(FP Ext 1 TS)
универсальная перегрузка ufromfpx
(функция)
nextdown
(FP Ext 1 TS)
универсальная перегрузка nextdown
(функция)
totalorder
(FP Ext 1 TS)
универсальная перегрузка totalorder
(функция)
totalordermag
(FP Ext 1 TS)
общая перегрузка totalordermag
(функция)
fadd
(FP Ext 1 TS)
универсальная перегрузка fadd
(функция)
dadd
(FP Ext 1 TS)
универсальная перегрузка dadd
(функция)
fsub
(FP Ext 1 TS)
универсальная перегрузка fsub
(функция)
dsub
(FP Ext 1 TS)
универсальная перегрузка dsub
(функция)
fmul
(FP Ext 1 TS)
универсальная перегрузка fmul
(функция)
dmul
(FP Ext 1 TS)
универсальная перегрузка dmul
(функция)
fdiv
(FP Ext 1 TS)
универсальная перегрузка fdiv
(функция)
ddiv
(FP Ext 1 TS)
универсальная перегрузка ddiv
(функция)
ffma
(FP Ext 1 TS)
универсальная перегрузка ffma
(функция)
dfma
(FP Ext 1 TS)
универсальная перегрузка dfma
(функция)
fsqrt
(FP Ext 1 TS)
универсальная перегрузка fsqrt
(функция)
dsqrt
(FP Ext 1 TS)
универсальная перегрузка dsqrt
(функция)

Примечания

Стандартные макросы C __STDC_IEC_559__ и __STDC_IEC_559_COMPLEX__ становятся устаревшими в соответствии с данной технической спецификацией.

Все функции и макросы, добавленные в библиотеку C этим расширением, объявляются только если макрос __STDC_WANT_IEC_60559_BFP_EXT__ определён до включения соответствующего заголовочного файла.

Помимо дополнений к стандартной библиотеке, ISO/IEC TS 18661-1:2014 вносит ряд изменений в базовый язык, в частности разделяя управление числами с плавающей точкой на статическое (управляемое новой директивой #pragma STDC FENV_ROUND ) и динамическое (управляемое функцией fesetround ). Большинство функций math.h учитывают статический режим округления, если он установлен, в приоритете над динамическим режимом округления.