7.2.1 Встроенные функции форматов с плавающей запятой
-
Встроенная функция:
double__builtin_huge_val(void) Возвращает положительную бесконечность, если она поддерживается форматом с плавающей запятой, иначе
DBL_MAX. Эта функция подходит для реализации макроса ISO CHUGE_VAL.
-
Встроенная функция:
float__builtin_huge_valf(void) Аналогична
__builtin_huge_val, но возвращаемый тип —float.
-
Встроенная функция:
long double__builtin_huge_vall(void) Аналогична
__builtin_huge_val, но возвращаемый тип —long double.
-
Встроенная функция:
_Floatn__builtin_huge_valfn(void) Аналогична
__builtin_huge_val, но возвращаемый тип —_Floatn.
-
Встроенная функция:
_Floatnx__builtin_huge_valfnx(void) Аналогична
__builtin_huge_val, но возвращаемый тип —_Floatnx.
-
Встроенная функция:
int__builtin_fpclassify(int, int, int, int, int, ...) Эта встроенная функция реализует функциональность fpclassify из C99. Первые пять аргументов типа int должны соответствовать представлениям целевой библиотеки о возможных классах значений с плавающей запятой и используются в качестве возвращаемых значений. Они должны быть константами и указываться в следующем порядке:
FP_NAN,FP_INFINITE,FP_NORMAL,FP_SUBNORMALиFP_ZERO. Многоточие обозначает ровно одно значение с плавающей запятой, подлежащее классификации. GCC рассматривает последний аргумент как аргумент с обобщённым типом, то есть не выполняет стандартное повышение типа float до double.
-
Встроенная функция:
double__builtin_inf(void) Аналогична
__builtin_huge_val, но генерируется предупреждение, если целевой формат с плавающей запятой не поддерживает бесконечности.
-
Встроенная функция:
_Decimal32__builtin_infd32(void) Аналогична
__builtin_inf, но возвращаемый тип —_Decimal32.
-
Встроенная функция:
_Decimal64__builtin_infd64(void) Аналогична
__builtin_inf, но возвращаемый тип —_Decimal64.
-
Встроенная функция:
_Decimal128__builtin_infd128(void) Аналогична
__builtin_inf, но возвращаемый тип —_Decimal128.
-
Встроенная функция:
float__builtin_inff(void) Аналогична
__builtin_inf, но возвращаемый тип —float. Эта функция подходит для реализации макроса ISO C99INFINITY.
-
Встроенная функция:
long double__builtin_infl(void) Аналогична
__builtin_inf, но возвращаемый тип —long double.
-
Встроенная функция:
_Floatn__builtin_inffn(void) Аналогична
__builtin_inf, но возвращаемый тип —_Floatn.
-
Встроенная функция:
_Floatn__builtin_inffnx(void) Аналогична
__builtin_inf, но возвращаемый тип —_Floatnx.
-
Встроенная функция:
int__builtin_isinf_sign(...) Аналогична
isinf, но возвращаемое значение равно -1 для аргумента-Infи 1 для аргумента+Inf. Обратите внимание: хотя список параметров представлен многоточием, эта функция принимает ровно один аргумент с плавающей запятой. GCC рассматривает этот параметр как параметр с обобщённым типом, то есть не выполняет стандартное повышение типа float до double.
-
Встроенная функция:
double__builtin_nan(const char *str) -
Это реализация функции ISO C99
nan.Поскольку ISO C99 определяет эту функцию через
strtod, которую мы не реализуем, необходимо описать разбор строки. Строка разбирается так же, как вstrtol; то есть основание определяется по начальному префиксу «0» или «0x». Разобранное число помещается в значащую часть таким образом, чтобы младший бит числа совпадал с младшим битом значащей части. Число усекается, чтобы поместиться в предоставленное поле значащей части. Значащая часть принудительно задаётся как тихий NaN.Если в эту функцию передан строковый литерал, который целиком был бы обработан функцией
strtol, она вычисляется достаточно рано, чтобы считаться константой времени компиляции.
-
Встроенная функция:
_Decimal32__builtin_nand32(const char *str) Аналогична
__builtin_nan, но возвращаемый тип —_Decimal32.
-
Встроенная функция:
_Decimal64__builtin_nand64(const char *str) Аналогична
__builtin_nan, но возвращаемый тип —_Decimal64.
-
Встроенная функция:
_Decimal128__builtin_nand128(const char *str) Аналогична
__builtin_nan, но возвращаемый тип —_Decimal128.
-
Встроенная функция:
float__builtin_nanf(const char *str) Аналогична
__builtin_nan, но возвращаемый тип —float.
-
Встроенная функция:
long double__builtin_nanl(const char *str) Аналогична
__builtin_nan, но возвращаемый тип —long double.
-
Встроенная функция:
_Floatn__builtin_nanfn(const char *str) Аналогична
__builtin_nan, но возвращаемый тип —_Floatn.
-
Встроенная функция:
_Floatnx__builtin_nanfnx(const char *str) Аналогична
__builtin_nan, но возвращаемый тип —_Floatnx.
-
Встроенная функция:
double__builtin_nans(const char *str) Аналогична
__builtin_nan, но значащая часть принудительно задаётся как сигнальный NaN. Функцияnansпредложена в документе WG14 N965.
-
Встроенная функция:
_Decimal32__builtin_nansd32(const char *str) Аналогична
__builtin_nans, но возвращаемый тип —_Decimal32.
-
Встроенная функция:
_Decimal64__builtin_nansd64(const char *str) Аналогична
__builtin_nans, но возвращаемый тип —_Decimal64.
-
Встроенная функция:
_Decimal128__builtin_nansd128(const char *str) Аналогична
__builtin_nans, но возвращаемый тип —_Decimal128.
-
Встроенная функция:
float__builtin_nansf(const char *str) Аналогична
__builtin_nans, но возвращаемый тип —float.
-
Встроенная функция:
long double__builtin_nansl(const char *str) Аналогична
__builtin_nans, но возвращаемый тип —long double.
-
Встроенная функция:
_Floatn__builtin_nansfn(const char *str) Аналогична
__builtin_nans, но возвращаемый тип —_Floatn.
-
Встроенная функция:
_Floatnx__builtin_nansfnx(const char *str) Аналогична
__builtin_nans, но возвращаемый тип —_Floatnx.
-
Встроенная функция:
int__builtin_issignaling(...) Возвращает ненулевое значение, если аргумент является сигнальным NaN, и ноль в противном случае. Обратите внимание: хотя список параметров представлен многоточием, эта функция принимает ровно один аргумент с плавающей запятой. GCC рассматривает этот параметр как параметр с обобщённым типом, то есть не выполняет стандартное повышение типа float до double. Эта встроенная функция может работать и без нестандартного параметра
-fsignaling-nans, однако, если сигнальный NaN вычисляется, сохраняется или передаётся в качестве аргумента какой-либо функции, отличной от этой встроенной функции, в текущей единице трансляции безопаснее использовать-fsignaling-nans. При включённом параметре-ffinite-math-onlyэта встроенная функция всегда возвращает 0.
-
Встроенная функция:
double__builtin_powi(double, int) -
Встроенная функция:
float__builtin_powif(float, int) -
Встроенная функция:
long double__builtin_powil(long double, int) Возвращает первый аргумент, возведённый в степень, заданную вторым аргументом. В отличие от функции
pow, никаких гарантий точности и округления не предоставляется.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Floating_002dPoint-Format-Builtins.html